diff --git a/lib/Service/ArchiMate/ArchiMateImportScope.php b/lib/Service/ArchiMate/ArchiMateImportScope.php new file mode 100644 index 000000000..6fea9a4ba --- /dev/null +++ b/lib/Service/ArchiMate/ArchiMateImportScope.php @@ -0,0 +1,203 @@ + + * @copyright 2026 Conduction B.V. + * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * @link https://github.com/ConductionNL/stackiq + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + * + * SPDX-FileCopyrightText: 2026 Conduction B.V. + * SPDX-License-Identifier: EUPL-1.2 + */ + +declare(strict_types=1); + +namespace OCA\Stackiq\Service\ArchiMate; + +/** + * Immutable import state: the model, its property definitions, the raw section + * lookups, the element lookup for views, the section being transformed and the + * raw properties of the item being flattened. Each with… method returns a copy. + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ +final class ArchiMateImportScope { + + /** + * Raw items per section name, keyed by identifier. + * + * @var array> + */ + private array $lookups = []; + + /** + * Elements by identifier, for splicing into view nodes. + * + * @var array + */ + private array $elementsLookup = []; + + /** + * The schema type of the section being transformed (element, view, ...). + * + * @var string + */ + private string $section = ''; + + /** + * The raw property list of the item being flattened. + * + * @var array + */ + private array $properties = []; + + /** + * Start a scope for one model. + * + * @param string $modelIdentifier The model identifier every object links to. + * @param array $propDefMap Property definition ref => property name. + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function __construct( + private readonly string $modelIdentifier, + private readonly array $propDefMap, + ) { + }//end __construct() + + /** + * The model identifier. + * + * @return string + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function modelIdentifier(): string { + return $this->modelIdentifier; + }//end modelIdentifier() + + /** + * The property definition map. + * + * @return array + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function propDefMap(): array { + return $this->propDefMap; + }//end propDefMap() + + /** + * The raw items of one section, keyed by identifier. + * + * @param string $sectionName The section name (elements, relationships, ...). + * + * @return array + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function lookup(string $sectionName): array { + return $this->lookups[$sectionName] ?? []; + }//end lookup() + + /** + * The elements lookup for views. + * + * @return array + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function elementsLookup(): array { + return $this->elementsLookup; + }//end elementsLookup() + + /** + * The schema type of the section being transformed. + * + * @return string + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function section(): string { + return $this->section; + }//end section() + + /** + * The raw property list of the item being flattened. + * + * @return array + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function properties(): array { + return $this->properties; + }//end properties() + + /** + * A copy with the raw section lookups. + * + * @param array> $lookups Raw items per section name. + * + * @return self + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function withLookups(array $lookups): self { + $copy = clone $this; + $copy->lookups = $lookups; + return $copy; + }//end withLookups() + + /** + * A copy with an elements lookup for views. + * + * @param array $elementsLookup Elements by identifier. + * + * @return self + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function withElementsLookup(array $elementsLookup): self { + $copy = clone $this; + $copy->elementsLookup = $elementsLookup; + return $copy; + }//end withElementsLookup() + + /** + * A copy for one section. + * + * @param string $section The schema type of the section. + * + * @return self + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function withSection(string $section): self { + $copy = clone $this; + $copy->section = $section; + return $copy; + }//end withSection() + + /** + * A copy for flattening one item's raw properties. + * + * @param array $properties The raw property list. + * + * @return self + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 + */ + public function withProperties(array $properties): self { + $copy = clone $this; + $copy->properties = $properties; + return $copy; + }//end withProperties() +}//end class diff --git a/lib/Service/ArchiMateImportService.php b/lib/Service/ArchiMateImportService.php index 5ac43d1ac..bc763bd11 100644 --- a/lib/Service/ArchiMateImportService.php +++ b/lib/Service/ArchiMateImportService.php @@ -23,6 +23,7 @@ use OCA\OpenRegister\Contract\ObjectServiceInterface; use OCA\OpenRegister\Service\ObjectService; use OCA\OpenRegister\Service\OrganisationService; +use OCA\Stackiq\Service\ArchiMate\ArchiMateImportScope; use OCA\Stackiq\Service\ProgressTracker; use OCA\Stackiq\Service\Settings\ObjectTypeLocatorInterface; use OCP\App\IAppManager; @@ -66,6 +67,8 @@ * @SuppressWarnings(PHPMD.CamelCaseVariableName) * @SuppressWarnings(PHPMD.UnusedPrivateField) * @SuppressWarnings(PHPMD.CountInLoopExpression) + * + * @spec openspec/specs/archimate-import/spec.md#requirement-the-system-shall-parse-an-archimate-amef-file-into-catalog-objects-req-001 */ class ArchiMateImportService { @@ -117,6 +120,11 @@ class ArchiMateImportService { */ private ?array $lastSaveResult = null; + /** + * The result lists of an OpenRegister saveObjects call, in the order they are aggregated. + */ + private const SAVE_BUCKETS = ['saved', 'updated', 'unchanged', 'invalid']; + /** * Operation ids a page may name for an import it follows. */ @@ -574,7 +582,7 @@ public function importArchiMateFileFromPath(array $options = []): array { 'total_objects_created' => $statistics['omschrijving']['total_objects_created'], 'total_objects_updated' => $statistics['omschrijving']['total_objects_updated'], 'total_objects_deleted' => $statistics['omschrijving']['total_objects_deleted'], - 'total_objects_skipped' => $statistics['omschrijving']['total_objects_skipped'], + 'total_objects_unchanged' => $statistics['omschrijving']['total_objects_unchanged'], 'total_errors' => $statistics['omschrijving']['total_errors'], ], 'performance_metrics' => [ @@ -878,6 +886,7 @@ private function normalizeArchiMateData(array $data, string $modelIdentifier): a ); // STEP 2: Process each section and store complete raw XML data. + $scope = new ArchiMateImportScope(modelIdentifier: $modelIdentifier, propDefMap: $propDefMap); $sections = ['elements', 'relationships', 'organizations', 'views', 'property_definitions']; $alternativeNames = [ 'views' => ['views', 'diagrams'], @@ -918,9 +927,7 @@ private function normalizeArchiMateData(array $data, string $modelIdentifier): a } else { $normalized[$section] = $this->extractSectionDataWithProperties( sectionData: $sectionData, - sectionName: $section, - modelIdentifier: $modelIdentifier, - propDefMap: $propDefMap + scope: $scope->withSection(section: $section) ); } }//end if @@ -940,136 +947,126 @@ private function normalizeArchiMateData(array $data, string $modelIdentifier): a /** * Extract data from a specific section, flatten properties, and store xml * - * @param mixed $sectionData Section data from XML parsing - * @param string $sectionName Name of the section being processed - * @param string $modelIdentifier The model identifier for linking items - * @param array $propDefMap Map of propertyDefinitionRef => property name + * @param mixed $sectionData Section data from XML parsing + * @param ArchiMateImportScope $scope The import scope for the section being processed * * @return array Extracted section data with complete XML preservation and flattened properties */ - private function extractSectionDataWithProperties( - mixed $sectionData, - string $sectionName, - string $modelIdentifier, - array $propDefMap, - ): array { + private function extractSectionDataWithProperties(mixed $sectionData, ArchiMateImportScope $scope): array { $extracted = []; - if (is_array($sectionData) === true) { - $items = $this->findItemsInSection(sectionData: $sectionData, sectionName: $sectionName); - foreach ($items as $item) { - $identifier = $this->extractIdentifier(item: $item, sectionName: $sectionName); - if (empty($identifier) === false) { - // OPTIMIZATION: Store XML data directly without expensive deep copy. - // Start with base object structure. - $object = [ - 'identifier' => $identifier, - 'section' => $sectionName, - 'model_identifier' => $modelIdentifier, - 'extracted_at' => time(), - 'xml' => $this->extractEssentialXmlData(item: $item), - // OPTIMIZATION: Store only essential XML data. - ]; + if (is_array($sectionData) === false) { + return $extracted; + } - // Extract type from xsi:type attribute - // (e.g., "Capability", "ApplicationComponent", "Referentiecomponent"). - // The xsi:type is stored as _xsi__type or in _attributes['xsi:type']. - if (isset($item['_xsi__type']) === true) { - $object['type'] = $item['_xsi__type']; - } elseif (isset($item['_attributes']['xsi:type']) === true) { - $object['type'] = $item['_attributes']['xsi:type']; - } + $sectionName = $scope->section(); + $items = $this->findItemsInSection(sectionData: $sectionData, sectionName: $sectionName); + foreach ($items as $item) { + $identifier = $this->extractIdentifier(item: $item, sectionName: $sectionName); + if (empty($identifier) === true) { + continue; + } - // Extract name from XML if it exists. - if (isset($item['name']) === true) { - if (is_array($item['name']) === true && isset($item['name']['_value']) === true) { - $object['name'] = $item['name']['_value']; - } elseif (is_string($item['name']) === true) { - $object['name'] = $item['name']; - } - } + // OPTIMIZATION: Store only essential XML data, without an expensive deep copy. + $object = [ + 'identifier' => $identifier, + 'section' => $sectionName, + 'model_identifier' => $scope->modelIdentifier(), + 'extracted_at' => time(), + 'xml' => $this->extractEssentialXmlData(item: $item), + ]; - // Extract documentation from XML if it exists - set both summary and documentation. - if (isset($item['documentation']) === true) { - $docValue = null; - if (is_array($item['documentation']) === true && isset($item['documentation']['_value']) === true) { - $docValue = $item['documentation']['_value']; - } elseif (is_string($item['documentation']) === true) { - $docValue = $item['documentation']; - } + $this->copyXsiType(object: $object, item: $item); + $this->copyNameAndDocumentation(object: $object, item: $item); - if ($docValue !== null) { - $object['omschrijving'] = $docValue; - $object['documentation'] = $docValue; - // Also set documentation field for schema compatibility. - } - } + // Flatten properties to root fields using the propertyDefinitionMap. + if (isset($item['properties']['property']) === true) { + $this->flattenSectionProperties( + object: $object, + scope: $scope->withProperties(properties: $this->definedPropertyList(properties: $item['properties']['property'])) + ); + } - // Flatten properties to root fields using the propertyDefinitionMap. - if (isset($item['properties']) === true && isset($item['properties']['property']) === true) { - $props = $item['properties']['property']; - $processedProperties = []; - if (isset($props[0]) === true) { - // Multiple properties. - foreach ($props as $prop) { - $defRef = $prop['_attributes']['propertyDefinitionRef'] ?? null; - $value = $prop['value']['_value'] ?? $prop['value'] ?? null; - if ($defRef !== false && isset($propDefMap[$defRef]) === true) { - $name = $propDefMap[$defRef]; - $camelCaseName = $this->convertToCamelCase(propertyName: $name); - $object[$camelCaseName] = $value; - - // Store property mapping for reference. - if (isset($object['_propertyMapping']) === false) { - $object['_propertyMapping'] = []; - } - - $object['_propertyMapping'][$camelCaseName] = $name; - - // If this property is 'Object ID', set slug for later use. - if (strtolower($name) === 'object id') { - $object['_slug'] = $value; - // Store temporarily, will be moved to @self.slug later. - } - } - }//end foreach - } elseif (isset($props['_attributes']['propertyDefinitionRef']) === true) { - // Single property. - $defRef = $props['_attributes']['propertyDefinitionRef']; - $value = $props['value']['_value'] ?? $props['value'] ?? null; - if ($defRef !== false && isset($propDefMap[$defRef]) === true) { - $name = $propDefMap[$defRef]; - $camelCaseName = $this->convertToCamelCase(propertyName: $name); - $object[$camelCaseName] = $value; - - // Store property mapping for reference. - if (isset($object['_propertyMapping']) === false) { - $object['_propertyMapping'] = []; - } - - $object['_propertyMapping'][$camelCaseName] = $name; - - $processedProperties[] = [ - 'original' => $name, - 'camelCase' => $camelCaseName, - 'value' => $value, - ]; - - if (strtolower($name) === 'object id') { - $object['_slug'] = $value; - // Store temporarily, will be moved to @self.slug later. - } - }//end if - }//end if - }//end if - - $extracted[$identifier] = $object; - }//end if - }//end foreach - }//end if + $extracted[$identifier] = $object; + }//end foreach return $extracted; }//end extractSectionDataWithProperties() + /** + * Copy an item's name, and its documentation as both omschrijving and documentation, when they have text. + * + * @param array $object The object being built + * @param array $item The raw XML item + * + * @return void + */ + private function copyNameAndDocumentation(array &$object, array $item): void { + if (isset($item['name']) === true) { + $name = $this->textValue(value: $item['name']); + if ($name !== null) { + $object['name'] = $name; + } + } + + if (isset($item['documentation']) === true) { + $docValue = $this->textValue(value: $item['documentation']); + if ($docValue !== null) { + $object['omschrijving'] = $docValue; + $object['documentation'] = $docValue; + } + } + }//end copyNameAndDocumentation() + + /** + * A raw property list as a list; a single property only counts when it names its definition. + * + * @param array $properties The raw `properties.property` value + * + * @return array The properties as a list + */ + private function definedPropertyList(array $properties): array { + if (isset($properties[0]) === true) { + return $properties; + } + + if (isset($properties['_attributes']['propertyDefinitionRef']) === true) { + return [$properties]; + } + + return []; + }//end definedPropertyList() + + /** + * Set each defined property on the object under its camelCase name; an "Object ID" also becomes the _slug. + * + * @param array $object The object being built + * @param ArchiMateImportScope $scope The scope with the item's property list and the definition map + * + * @return void + */ + private function flattenSectionProperties(array &$object, ArchiMateImportScope $scope): void { + $propDefMap = $scope->propDefMap(); + foreach ($scope->properties() as $prop) { + $defRef = $prop['_attributes']['propertyDefinitionRef'] ?? null; + $value = $prop['value']['_value'] ?? $prop['value'] ?? null; + if (isset($propDefMap[$defRef]) === false) { + continue; + } + + $name = $propDefMap[$defRef]; + $camelCaseName = $this->convertToCamelCase(propertyName: $name); + $object[$camelCaseName] = $value; + + // Store property mapping for reference. + $object['_propertyMapping'][$camelCaseName] = $name; + + // Stored temporarily, moved to @self.slug later. + if (strtolower($name) === 'object id') { + $object['_slug'] = $value; + } + } + }//end flattenSectionProperties() + /** * Convert normalized data to OpenRegister objects with @self structure * @@ -1111,12 +1108,8 @@ private function convertToOpenRegisterObjects(array $normalizedData, string $mod foreach ($sections as $section) { if (empty($normalizedData[$section]) === false && is_array($normalizedData[$section]) === true) { $sectionCounts[$section] = count($normalizedData[$section]); - foreach ($normalizedData[$section] as $identifier => $data) { - $objects[] = $this->createSectionObject( - section: $section, - identifier: $identifier, - data: $data - ); + foreach ($normalizedData[$section] as $data) { + $objects[] = $this->createSectionObject(section: $section, data: $data); } } else { $sectionCounts[$section] = 0; @@ -1148,9 +1141,7 @@ private function convertToOpenRegisterObjects(array $normalizedData, string $mod */ private function createModelObject(array $metadata, string $modelIdentifier): array { // OPTIMIZATION: Use cached configuration values. - $registerId = $this->cachedConfig['registerId'] ?? throw new \RuntimeException( - 'Register ID not found. Ensure AMEF config is initialized.' - ); + $registerId = $this->registerId(); $modelSchemaIds = $this->cachedConfig['schemaIds']['model'] ?? null; if ($modelSchemaIds === null) { throw new \RuntimeException( @@ -1216,61 +1207,41 @@ private function createModelObject(array $metadata, string $modelIdentifier): ar /** * Create section object with @self structure and flattened XML data * + * The object's id is its flattened "Object ID" when it has one, with the AMEF identifier as + * slug; otherwise the identifier is the id and the identifier without "id-" the slug. + * * @param string $section Section name - * @param string $identifier Item identifier - * @param array $data Item data (already contains XML data at root level) + * @param array $data Item data with its identifier (already contains XML data at root level) * * @return array Section object with @self structure */ - private function createSectionObject(string $section, string $identifier, array $data): array { + private function createSectionObject(string $section, array $data): array { + $identifier = $data['identifier']; + // OPTIMIZATION: Use cached configuration values. - $registerId = $this->cachedConfig['registerId'] ?? throw new \RuntimeException( - 'Register ID not found. Ensure AMEF config is initialized.' - ); + $registerId = $this->registerId(); $schemaId = $this->cachedConfig['schemaIds'][$section] ?? $this->getSchemaIdForSection(section: $section); - // FIXED: Use objectId as main ID and AMEF identifier as slug. - $objectId = null; - $slug = null; - - // Priority 1: Check for objectId property (flattened from "Object ID"). + $slug = $identifier; if (isset($data['objectId']) === true) { $objectId = $data['objectId']; - // Use AMEF identifier as slug. - $slug = $identifier; } elseif (isset($data['_slug']) === true) { - // Priority 2: Check for temporary _slug field (legacy support). + // The temporary _slug field (legacy support) is removed once read. $objectId = $data['_slug']; - // Use AMEF identifier as slug. - $slug = $identifier; - // Remove the temporary field. unset($data['_slug']); } elseif (isset($data['Object ID']) === true) { - // Priority 3: Check for direct "Object ID" property. $objectId = $data['Object ID']; - // Use AMEF identifier as slug. - $slug = $identifier; } else { - // Fallback: Use AMEF identifier as both ID and extract clean UUID for slug. $objectId = $identifier; - // Extract clean UUID from AMEF identifier (remove "id-" prefix if present). - if (str_starts_with($identifier, 'id-') === true) { - $slug = substr($identifier, 3); - // Remove "id-" prefix. - } else { - $slug = $identifier; - } - }//end if + $slug = $this->slugFromIdentifier(identifier: $identifier); + } - // Create object with @self structure using correct ID and slug. $object = [ '@self' => [ 'register' => $registerId, 'schema' => $schemaId, 'id' => $objectId, - // Now using objectId as main ID. 'slug' => $slug, - // Now using AMEF identifier as slug. 'owner' => $this->getCurrentUserId(), 'organisation' => $this->getCurrentOrganisation(), 'published' => date('Y-m-d\TH:i:s\Z'), @@ -1320,9 +1291,7 @@ private function saveObjectsToDatabase(array $objects): array { // Saving objects to database. // OPTIMIZATION: Use cached register ID. - $registerId = $this->cachedConfig['registerId'] ?? throw new \RuntimeException( - 'Register ID not found. Ensure AMEF config is initialized.' - ); + $registerId = $this->registerId(); // MAGIC MAPPING SUPPORT: Group objects by schema first, then save each schema group. // This ensures each batch has a single schema so UnifiedObjectMapper can route to the correct magic table. @@ -1343,7 +1312,7 @@ private function saveObjectsToDatabase(array $objects): array { ] ); - $groupResult = $this->saveSchemaGroups(schemaGroups: $schemaGroups, objectService: $objectService, registerId: $registerId); + $groupResult = $this->saveSchemaGroups(schemaGroups: $schemaGroups, objectService: $objectService); $allResults = $groupResult['results']; $aggregatedStats = $groupResult['stats']; $countsBySchema = $aggregatedStats['countsBySchema']; @@ -1393,20 +1362,14 @@ private function saveObjectsToDatabase(array $objects): array { * * @param array>> $schemaGroups Objects keyed by schema id * @param ObjectServiceInterface $objectService OpenRegister's object service - * @param int $registerId The AMEF register id * * @return array{results: array, stats: array} The saved objects and the aggregated statistics * * @spec openspec/specs/archimate-import-progress/spec.md#requirement-req-aip-001-a-running-import-shall-record-its-phase-and-the-objects-saved-so-far */ - private function saveSchemaGroups(array $schemaGroups, ObjectServiceInterface $objectService, int $registerId): array { - $allResults = []; - $aggregatedStats = [ - 'saved' => [], - 'updated' => [], - 'unchanged' => [], - 'invalid' => [], - ]; + private function saveSchemaGroups(array $schemaGroups, ObjectServiceInterface $objectService): array { + $registerId = $this->registerId(); + $outcome = ['results' => [], 'stats' => array_fill_keys(self::SAVE_BUCKETS, [])]; // Track counts per schema for accurate statistics (serialized objects lose the 'section' field). $countsBySchema = []; @@ -1428,10 +1391,9 @@ private function saveSchemaGroups(array $schemaGroups, ObjectServiceInterface $o try { // Save this schema group with the specific schema ID. // PERFORMANCE: Disabled validation and events for bulk import (like CSV import pattern). + $schemaValue = null; if ($schemaId !== 'unknown') { $schemaValue = $schemaId; - } else { - $schemaValue = null; } $saveResult = $objectService->saveObjects( @@ -1444,34 +1406,15 @@ private function saveSchemaGroups(array $schemaGroups, ObjectServiceInterface $o events: false ); - // Merge results. - $aggregatedStats['saved'] = array_merge($aggregatedStats['saved'], $saveResult['saved'] ?? []); - $aggregatedStats['updated'] = array_merge($aggregatedStats['updated'], $saveResult['updated'] ?? []); - $aggregatedStats['unchanged'] = array_merge($aggregatedStats['unchanged'], $saveResult['unchanged'] ?? []); - $aggregatedStats['invalid'] = array_merge($aggregatedStats['invalid'], $saveResult['invalid'] ?? []); - - // Track per-schema counts for statistics (since serialized objects lose 'section'). - $countsBySchema[$schemaId] = [ - 'saved' => count($saveResult['saved'] ?? []), - 'updated' => count($saveResult['updated'] ?? []), - 'unchanged' => count($saveResult['unchanged'] ?? []), - 'invalid' => count($saveResult['invalid'] ?? []), - ]; - - $allResults = array_merge( - $allResults, - $saveResult['saved'] ?? [], - $saveResult['updated'] ?? [], - $saveResult['unchanged'] ?? [] - ); + $countsBySchema[$schemaId] = $this->addSaveResult(outcome: $outcome, saveResult: $saveResult); $this->logger->debug( 'Schema group saved for magic mapping', [ 'schemaId' => $schemaId, 'objectCount' => $schemaObjectCount, - 'saved' => count($saveResult['saved'] ?? []), - 'updated' => count($saveResult['updated'] ?? []), + 'saved' => $countsBySchema[$schemaId]['saved'], + 'updated' => $countsBySchema[$schemaId]['updated'], ] ); } catch (\Exception $e) { @@ -1491,11 +1434,49 @@ private function saveSchemaGroups(array $schemaGroups, ObjectServiceInterface $o } }//end foreach - $aggregatedStats['countsBySchema'] = $countsBySchema; + $outcome['stats']['countsBySchema'] = $countsBySchema; - return ['results' => $allResults, 'stats' => $aggregatedStats]; + return $outcome; }//end saveSchemaGroups() + /** + * Add one schema group's save result to the running outcome. + * + * @param array{results: array, stats: array} $outcome The saved objects and statistics so far + * @param array $saveResult What saveObjects returned for the group + * + * @return array{saved: int, updated: int, unchanged: int, invalid: int} The group's counts + */ + private function addSaveResult(array &$outcome, array $saveResult): array { + $counts = []; + foreach (self::SAVE_BUCKETS as $bucket) { + $outcome['stats'][$bucket] = array_merge($outcome['stats'][$bucket], $saveResult[$bucket] ?? []); + $counts[$bucket] = count($saveResult[$bucket] ?? []); + } + + $outcome['results'] = array_merge( + $outcome['results'], + $saveResult['saved'] ?? [], + $saveResult['updated'] ?? [], + $saveResult['unchanged'] ?? [] + ); + + return $counts; + }//end addSaveResult() + + /** + * The cached AMEF register id. + * + * @return int The register id + * + * @throws \RuntimeException When the AMEF configuration names no register + */ + private function registerId(): int { + return $this->cachedConfig['registerId'] ?? throw new \RuntimeException( + 'Register ID not found. Ensure AMEF config is initialized.' + ); + }//end registerId() + /** * Start recording progress when the upload names a well-formed operation id. * @@ -2375,8 +2356,8 @@ private function findItemsInSection(array $sectionData, string $sectionName): ar $items = [$sectionData]; } - // Ensure items is always an array. - if (is_array($items) === false) { + // Ensure items is always an array; a section with one item holds that item, not a list. + if (is_array($items) === false || isset($items['_attributes']) === true) { $items = [$items]; } @@ -2512,66 +2493,41 @@ private function buildIdentifierPatternsForSection(string $sectionName): array { * the essential data needed for round-trip fidelity and export functionality. * For view objects, element splicing is performed if elements lookup is provided. * - * @param array $item The complete XML item data + * @param array $item The complete XML item data * @param array $elementsLookup Optional elements lookup for view processing - * @param string $schemaType Schema type for conditional processing * * @return array Essential XML data for storage */ - private function extractEssentialXmlData(array $item, array $elementsLookup = [], string $schemaType = ''): array { + private function extractEssentialXmlData(array $item, array $elementsLookup = []): array { $essential = []; - // Always preserve core attributes (needed for export). - if (isset($item['_attributes']) === true) { - $essential['_attributes'] = $item['_attributes']; - } - - // Preserve name and documentation (already extracted to root level but needed for export). - if (isset($item['name']) === true) { - $essential['name'] = $item['name']; - } - - if (isset($item['documentation']) === true) { - $essential['documentation'] = $item['documentation']; - } - - // Preserve properties structure (needed for property mapping). - if (isset($item['properties']) === true) { - $essential['properties'] = $item['properties']; - } - - // For relationships, preserve source/target information. - if (isset($item['source']) === true) { - $essential['source'] = $item['source']; - } - - if (isset($item['target']) === true) { - $essential['target'] = $item['target']; - } - - // Preserve any other critical ArchiMate-specific fields. - $criticalFields = ['type', 'viewpoint', 'accessType', 'isDirected']; - foreach ($criticalFields as $field) { + // Preserve the core attributes, name, documentation, properties and relationship ends (needed for export), + // any other critical ArchiMate-specific fields, and the original node/connection arrays of views. + $fields = [ + '_attributes', + 'name', + 'documentation', + 'properties', + 'source', + 'target', + 'type', + 'viewpoint', + 'accessType', + 'isDirected', + 'node', + 'connection', + ]; + foreach ($fields as $field) { if (isset($item[$field]) === true) { $essential[$field] = $item[$field]; } } - // Preserve original node/connection arrays for views (needed by export's addViewDataToXmlNode). - if (isset($item['node']) === true) { - $essential['node'] = $item['node']; - } - - if (isset($item['connection']) === true) { - $essential['connection'] = $item['connection']; - } - // Extract flattened viewNodes/viewRelationships for frontend consumption. - if ($schemaType === 'view') { - $this->extractViewNodesAndConnections(item: $item, essential: $essential, elementsLookup: $elementsLookup); - } else { - $this->extractViewNodesAndConnections(item: $item, essential: $essential); - } + $essential = array_merge( + $essential, + $this->extractViewNodesAndConnections(item: $item, elementsLookup: $elementsLookup) + ); // Add a marker to indicate this is essential data (for debugging). $essential['_essential_data'] = true; @@ -2585,21 +2541,17 @@ private function extractEssentialXmlData(array $item, array $elementsLookup = [] * This method extracts and transforms nodes and connections from view XML data into * the standardized viewNodes and viewRelationships format used by the frontend. * - * @param array $item The complete XML item data - * @param array $essential Essential XML data to enrich by reference - * @param array $elementsLookup Optional lookup array of elements + * @param array $item The complete XML item data + * @param array $elementsLookup Lookup array of elements * - * @return void + * @return array The viewNodes and viewRelationships the item has */ - private function extractViewNodesAndConnections(array $item, array &$essential, array $elementsLookup = []): void { - // Only process if this looks like a view object (has nodes or connections). - if (isset($item['node']) === false && isset($item['connection']) === false) { - return; - } + private function extractViewNodesAndConnections(array $item, array $elementsLookup): array { + $extracted = []; // Extract viewNodes array with proper JSON structure. if (isset($item['node']) === true) { - $essential['viewNodes'] = $this->extractViewNodesRecursively( + $extracted['viewNodes'] = $this->extractViewNodesRecursively( nodeData: $item['node'], elementsLookup: $elementsLookup ); @@ -2607,12 +2559,15 @@ private function extractViewNodesAndConnections(array $item, array &$essential, // Extract viewRelationships array with proper JSON structure. if (isset($item['connection']) === true) { - $essential['viewRelationships'] = $this->extractViewRelationshipsRecursively( + $extracted['viewRelationships'] = $this->extractViewRelationshipsRecursively( connectionData: $item['connection'] ); } + + return $extracted; }//end extractViewNodesAndConnections() + /** * Extract view nodes with proper JSON structure for frontend consumption * @@ -3292,26 +3247,26 @@ private function processGemmaReferenceComponentStandards(array $objects): array }//end foreach // PASS 2: Process relationships (need all entities collected first for StandaardVersie relationships). + $gemma = [ + 'refComponenten' => $refComponenten, + 'standards' => $standards, + 'standardVersions' => $standardVersions, + 'gemmaRelationshipMap' => $gemmaRelationshipMap, + 'stdVersionRelMap' => $stdVersionRelMap, + ]; foreach ($objects as $object) { if (isset($object['section']) === true && $object['section'] === 'relationship') { // Process Referentiecomponent-Standaard relationships. - $this->processRelationshipImmediate( - relationship: $object, - refComponenten: $refComponenten, - standards: $standards, - gemmaRelationshipMap: $gemmaRelationshipMap - ); + $this->processRelationshipImmediate(relationship: $object, gemma: $gemma); // Process StandaardVersie-Standaard relationships (Specialization type). - $this->processStandardVersionRelationship( - relationship: $object, - standardVersions: $standardVersions, - standards: $standards, - stdVersionRelMap: $stdVersionRelMap - ); + $this->processStandardVersionRelationship(relationship: $object, gemma: $gemma); } } + $gemmaRelationshipMap = $gemma['gemmaRelationshipMap']; + $stdVersionRelMap = $gemma['stdVersionRelMap']; + // Enhanced debug logging. $this->logger->info( 'GEMMA objects processing complete', @@ -3452,18 +3407,12 @@ private function processGemmaReferenceComponentStandards(array $objects): array * Process StandaardVersie-Standaard relationships (Specialization type) * * @param array $relationship The relationship object - * @param array $standardVersions Array of StandaardVersie identifiers - * @param array $standards Array of Standaard identifiers - * @param array $stdVersionRelMap Map of StandaardVersie to Standaard + * @param array $gemma The GEMMA index: standardVersions and standards by identifier, and the + * stdVersionRelMap (StandaardVersie => Standaard) this updates * * @return void */ - private function processStandardVersionRelationship( - array $relationship, - array $standardVersions, - array $standards, - array &$stdVersionRelMap, - ): void { + private function processStandardVersionRelationship(array $relationship, array &$gemma): void { // Get source and target from relationship. $source = $this->extractRelationshipEndpoint(relationship: $relationship, endpoint: 'source'); $target = $this->extractRelationshipEndpoint(relationship: $relationship, endpoint: 'target'); @@ -3483,6 +3432,8 @@ private function processStandardVersionRelationship( // Check if one end is a StandaardVersie and the other is a Standaard. $versionId = null; $standardId = null; + $standardVersions = $gemma['standardVersions']; + $standards = $gemma['standards']; if (isset($standardVersions[$source]) === true && isset($standards[$target]) === true) { // StandaardVersie -> Standaard. @@ -3495,7 +3446,7 @@ private function processStandardVersionRelationship( } if ($standardId === true) { - $stdVersionRelMap[$versionId] = $standardId; + $gemma['stdVersionRelMap'][$versionId] = $standardId; } }//end processStandaardVersieRelationship() @@ -3503,18 +3454,12 @@ private function processStandardVersionRelationship( * OPTIMIZATION: Process relationship immediately when found (single-pass algorithm) * * @param array $relationship The relationship object - * @param array $refComponenten Array of Referentiecomponent identifiers - * @param array $standards Array of Standaard identifiers - * @param array $gemmaRelationshipMap The relationship map to update + * @param array $gemma The GEMMA index: refComponenten and standards by identifier, and the + * gemmaRelationshipMap this updates * * @return void */ - private function processRelationshipImmediate( - array $relationship, - array $refComponenten, - array $standards, - array &$gemmaRelationshipMap, - ): void { + private function processRelationshipImmediate(array $relationship, array &$gemma): void { // Get source and target from relationship XML or flattened properties. $source = $this->extractRelationshipEndpoint(relationship: $relationship, endpoint: 'source'); $target = $this->extractRelationshipEndpoint(relationship: $relationship, endpoint: 'target'); @@ -3534,6 +3479,8 @@ private function processRelationshipImmediate( // Check if one end is a Referentiecomponent and the other is a Standaard. $refCompId = null; $standardId = null; + $refComponenten = $gemma['refComponenten']; + $standards = $gemma['standards']; if (isset($refComponenten[$source]) === true && isset($standards[$target]) === true) { // Referentiecomponent -> Standaard. @@ -3547,8 +3494,8 @@ private function processRelationshipImmediate( if ($standardId === true) { // Initialize arrays if not exists. - if (isset($gemmaRelationshipMap[$refCompId]) === false) { - $gemmaRelationshipMap[$refCompId] = [ + if (isset($gemma['gemmaRelationshipMap'][$refCompId]) === false) { + $gemma['gemmaRelationshipMap'][$refCompId] = [ 'aanbevolen' => [], 'verplicht' => [], ]; @@ -3562,9 +3509,9 @@ private function processRelationshipImmediate( // Convert identifier to UUID format (remove "id-" prefix) for _extend compatibility. $standaardUuid = str_replace('id-', '', $standardId); if (strtolower($verbindingsrol) === 'aanbevolen') { - $gemmaRelationshipMap[$refCompId]['aanbevolen'][] = $standaardUuid; + $gemma['gemmaRelationshipMap'][$refCompId]['aanbevolen'][] = $standaardUuid; } elseif (strtolower($verbindingsrol) === 'verplicht') { - $gemmaRelationshipMap[$refCompId]['verplicht'][] = $standaardUuid; + $gemma['gemmaRelationshipMap'][$refCompId]['verplicht'][] = $standaardUuid; } }//end if }//end processRelationshipImmediate() @@ -3684,22 +3631,15 @@ private function transformArchiMateXmlToObjectsBatch(array $xmlData, string $mod ] ); + $scope = (new ArchiMateImportScope(modelIdentifier: $modelIdentifier, propDefMap: $propDefMap))->withLookups(lookups: $allLookups); + // SPEED OPTIMIZATION 3: Process all non-view sections in bulk. $bulkProcessingStart = microtime(true); - $nonViewObjects = $this->bulkProcessNonViewSections( - xmlData: $xmlData, - modelIdentifier: $modelIdentifier, - propDefMap: $propDefMap, - allLookups: $allLookups - ); + $nonViewObjects = $this->bulkProcessNonViewSections(xmlData: $xmlData, scope: $scope); $allObjects = array_merge($allObjects, $nonViewObjects); // SPEED OPTIMIZATION: Build elements lookup directly from raw data (faster than from processed objects). - $elementsLookup = $this->buildElementsLookupFromRawData( - rawElementsData: $allLookups['elements'], - processedObjects: $nonViewObjects, - propDefMap: $propDefMap - ); + $elementsLookup = $this->buildElementsLookupFromRawData(scope: $scope); $bulkTime = microtime(true) - $bulkProcessingStart; @@ -3707,9 +3647,7 @@ private function transformArchiMateXmlToObjectsBatch(array $xmlData, string $mod $viewProcessingStart = microtime(true); $viewObjects = $this->processViewsMaximumSpeed( xmlData: $xmlData, - modelIdentifier: $modelIdentifier, - propDefMap: $propDefMap, - elementsLookup: $elementsLookup + scope: $scope->withElementsLookup(elementsLookup: $elementsLookup) ); $allObjects = array_merge($allObjects, $viewObjects); $viewTime = microtime(true) - $viewProcessingStart; @@ -3718,7 +3656,7 @@ private function transformArchiMateXmlToObjectsBatch(array $xmlData, string $mod // Transformation completed. // MEMORY CLEANUP: Free all intermediate lookups and caches before database operations. $memoryBeforeCleanup = memory_get_usage(true); - unset($allLookups, $elementsLookup, $propDefMap); + unset($allLookups, $elementsLookup, $propDefMap, $scope); $this->camelCaseCache = []; // Clear property name cache. $this->idPatternCache = []; @@ -3826,81 +3764,29 @@ private function buildElementsLookup(array $elementObjects): array { * This is faster than building from processed objects because we skip intermediate processing * and build the lookup table directly from the source data with minimal transformations. * - * @param array $rawElementsData Raw elements data from XML - * @param array $processedObjects Already processed objects (for fallback) - * @param array $propDefMap Property definition map + * @param ArchiMateImportScope $scope The import scope with the raw section lookups * * @return array Elements lookup for view processing */ - private function buildElementsLookupFromRawData( - array $rawElementsData, - array $processedObjects, - array $propDefMap, - ): array { + private function buildElementsLookupFromRawData(ArchiMateImportScope $scope): array { $lookup = []; // SPEED: Build directly from raw data with minimal processing. - foreach ($rawElementsData as $identifier => $rawItem) { + foreach ($scope->lookup(sectionName: 'elements') as $identifier => $rawItem) { $element = [ 'identifier' => $identifier, 'section' => 'element', ]; - - // Fast name extraction. - if (isset($rawItem['name']) === true) { - if (is_array($rawItem['name']) === true && isset($rawItem['name']['_value']) === true) { - $element['name'] = $rawItem['name']['_value']; - } else { - if (is_string($rawItem['name']) === true) { - $element['name'] = $rawItem['name']; - } else { - $element['name'] = ''; - } - } - } - - // Fast summary extraction. - if (isset($rawItem['documentation']) === true) { - if (is_array($rawItem['documentation']) === true && isset($rawItem['documentation']['_value']) === true) { - $element['omschrijving'] = $rawItem['documentation']['_value']; - } else { - if (is_string($rawItem['documentation']) === true) { - $element['omschrijving'] = $rawItem['documentation']; - } else { - $element['omschrijving'] = ''; - } - } - } - - // Extract type from xsi:type attribute. - if (isset($rawItem['_xsi__type']) === true) { - $element['type'] = $rawItem['_xsi__type']; - } elseif (isset($rawItem['_attributes']['xsi:type']) === true) { - $element['type'] = $rawItem['_attributes']['xsi:type']; - } + $this->copyNameAndSummary(object: $element, item: $rawItem); + $this->copyXsiType(object: $element, item: $rawItem); // Fast properties flattening (only essential properties for splicing). - if (isset($rawItem['properties']['property']) === true && empty($propDefMap) === false) { - $props = [$rawItem['properties']['property']]; - if (isset($rawItem['properties']['property'][0]) === true) { - $props = $rawItem['properties']['property']; - } - - foreach ($props as $prop) { - if (isset($prop['_attributes']['propertyDefinitionRef']) === false) { - continue; - } - - $defRef = $prop['_attributes']['propertyDefinitionRef']; - $value = $prop['value']['_value'] ?? $prop['value'] ?? null; - - if ($value !== null && isset($propDefMap[$defRef]) === true) { - $propertyName = $propDefMap[$defRef]; - $camelCaseName = $this->convertToCamelCase(propertyName: $propertyName); - $element[$camelCaseName] = $value; - } - } - }//end if + if (isset($rawItem['properties']['property']) === true && empty($scope->propDefMap()) === false) { + $this->spliceProperties( + element: $element, + scope: $scope->withProperties(properties: $rawItem['properties']['property']) + ); + } $lookup[$identifier] = $element; }//end foreach @@ -3916,6 +3802,97 @@ private function buildElementsLookupFromRawData( return $lookup; }//end buildElementsLookupFromRawData() + /** + * Copy the defined, non-null property values of a raw element onto its lookup entry. + * + * @param array $element The lookup entry + * @param ArchiMateImportScope $scope The scope with the element's raw properties + * + * @return void + */ + private function spliceProperties(array &$element, ArchiMateImportScope $scope): void { + $propDefMap = $scope->propDefMap(); + foreach ($this->propertyList(properties: $scope->properties()) as $prop) { + if (isset($prop['_attributes']['propertyDefinitionRef']) === false) { + continue; + } + + $defRef = $prop['_attributes']['propertyDefinitionRef']; + $value = $prop['value']['_value'] ?? $prop['value'] ?? null; + if ($value !== null && isset($propDefMap[$defRef]) === true) { + $element[$this->convertToCamelCase(propertyName: $propDefMap[$defRef])] = $value; + } + } + }//end spliceProperties() + + /** + * A raw property list as a list: a single property becomes a list of one. + * + * @param array $properties The raw `properties.property` value + * + * @return array The properties as a list + */ + private function propertyList(array $properties): array { + if (isset($properties[0]) === true) { + return $properties; + } + + return [$properties]; + }//end propertyList() + + /** + * The text of an XML leaf: its `_value`, or the value itself when it is a string. + * + * @param mixed $value The XML leaf + * + * @return mixed The text, or null when the leaf has none + */ + private function textValue(mixed $value): mixed { + if (is_array($value) === true && isset($value['_value']) === true) { + return $value['_value']; + } + + if (is_string($value) === true) { + return $value; + } + + return null; + }//end textValue() + + /** + * Copy an item's name and documentation onto the object as name and omschrijving. + * + * A name or documentation without text is copied as an empty string. + * + * @param array $object The object being built + * @param array $item The raw XML item + * + * @return void + */ + private function copyNameAndSummary(array &$object, array $item): void { + foreach (['name' => 'name', 'documentation' => 'omschrijving'] as $source => $target) { + if (isset($item[$source]) === true) { + $object[$target] = $this->textValue(value: $item[$source]) ?? ''; + } + } + }//end copyNameAndSummary() + + /** + * Copy an item's xsi:type (e.g. "Capability", "ApplicationComponent") onto the object as type. + * + * @param array $object The object being built + * @param array $item The raw XML item + * + * @return void + */ + private function copyXsiType(array &$object, array $item): void { + if (isset($item['_xsi__type']) === true) { + $object['type'] = $item['_xsi__type']; + } elseif (isset($item['_attributes']['xsi:type']) === true) { + $object['type'] = $item['_attributes']['xsi:type']; + } + }//end copyXsiType() + /** * Create model object directly with cached configuration * @@ -4057,18 +4034,14 @@ private function findItemsSimplified(array $sectionData, string $sectionType): a /** * Flatten properties in batch for better performance * - * @param array $object Object to add properties to - * @param array $properties Properties array from XML - * @param array $propDefMap Property definition map + * @param array $object Object to add properties to + * @param ArchiMateImportScope $scope The scope with the item's raw properties and the definition map * * @return void */ - private function flattenPropertiesBatch(array &$object, array $properties, array $propDefMap): void { - $props = [$properties]; - if (isset($properties[0]) === true) { - $props = $properties; - } - + private function flattenPropertiesBatch(array &$object, ArchiMateImportScope $scope): void { + $props = $this->propertyList(properties: $scope->properties()); + $propDefMap = $scope->propDefMap(); $processedProperties = []; // Debug: Log property flattening process. @@ -4096,7 +4069,6 @@ private function flattenPropertiesBatch(array &$object, array $properties, array } $defRef = $prop['_attributes']['propertyDefinitionRef']; - $value = $prop['value']['_value'] ?? $prop['value'] ?? null; // Debug: Log property reference lookup. if (isset($propDefMap[$defRef]) === false) { @@ -4111,53 +4083,15 @@ private function flattenPropertiesBatch(array &$object, array $properties, array continue; } - // No isset($propDefMap[$defRef]) re-check: the loop above only - // reaches here for a $defRef the map already has. - if ($value !== null) { - $propertyName = $propDefMap[$defRef]; - $camelCaseName = $this->convertToCamelCase(propertyName: $propertyName); - $object[$camelCaseName] = $value; - - // Store property mapping for reference. - if (isset($object['_propertyMapping']) === false) { - $object['_propertyMapping'] = []; - } - - $object['_propertyMapping'][$camelCaseName] = $propertyName; - - $processedProperties[] = [ - 'original' => $propertyName, - 'camelCase' => $camelCaseName, - 'value' => $value, - 'def_ref' => $defRef, - ]; - - // Object ID property is now handled after property flattening is complete. - // Debug: Log GEMMA type properties specifically. - if (stripos($propertyName, 'gemma') !== false || $defRef === 'propid-3') { - $this->logger->info( - 'GEMMA type property processed', - [ - 'object_id' => $object['identifier'] ?? 'unknown', - 'property_name' => $propertyName, - 'camel_case_name' => $camelCaseName, - 'value' => $value, - 'def_ref' => $defRef, - ] - ); - } - } else { - // 'mapping_exists' is always true here — the map lookup already - // succeeded, so a null $value is the only way into this branch. - $this->logger->warning( - 'Property value is null', - [ - 'object_id' => $object['identifier'] ?? 'unknown', - 'property_def_ref' => $defRef, - 'value' => $value, - ] - ); - }//end if + $entry = [ + 'name' => $propDefMap[$defRef], + 'def_ref' => $defRef, + 'value' => $prop['value']['_value'] ?? $prop['value'] ?? null, + ]; + $processed = $this->applyFlattenedProperty(object: $object, entry: $entry); + if ($processed !== null) { + $processedProperties[] = $processed; + } }//end foreach // Debug: Log final property flattening results. @@ -4172,6 +4106,58 @@ private function flattenPropertiesBatch(array &$object, array $properties, array ); }//end flattenPropertiesBatch() + /** + * Set one defined property on the object under its camelCase name, or log a null value. + * + * @param array $object The object being built + * @param array{name: string, def_ref: string, value: mixed} $entry The property name, its definition ref and its value + * + * @return array|null The processed property, or null when its value is null + */ + private function applyFlattenedProperty(array &$object, array $entry): ?array { + $defRef = $entry['def_ref']; + $value = $entry['value']; + if ($value === null) { + $this->logger->warning( + 'Property value is null', + [ + 'object_id' => $object['identifier'] ?? 'unknown', + 'property_def_ref' => $defRef, + 'value' => $value, + ] + ); + return null; + } + + $propertyName = $entry['name']; + $camelCaseName = $this->convertToCamelCase(propertyName: $propertyName); + $object[$camelCaseName] = $value; + + // Store property mapping for reference. + $object['_propertyMapping'][$camelCaseName] = $propertyName; + + // Debug: Log GEMMA type properties specifically. + if (stripos($propertyName, 'gemma') !== false || $defRef === 'propid-3') { + $this->logger->info( + 'GEMMA type property processed', + [ + 'object_id' => $object['identifier'] ?? 'unknown', + 'property_name' => $propertyName, + 'camel_case_name' => $camelCaseName, + 'value' => $value, + 'def_ref' => $defRef, + ] + ); + } + + return [ + 'original' => $propertyName, + 'camelCase' => $camelCaseName, + 'value' => $value, + 'def_ref' => $defRef, + ]; + }//end applyFlattenedProperty() + /** * SPEED OPTIMIZATION: Build all lookups simultaneously for maximum performance * @@ -4225,19 +4211,12 @@ private function buildAllLookupsSimultaneously(array $xmlData): array { /** * SPEED OPTIMIZATION: Bulk process all non-view sections with vectorized operations * - * @param array $xmlData XML data - * @param string $modelIdentifier Model identifier - * @param array $propDefMap Property definition map - * @param array $allLookups All pre-built lookups + * @param array $xmlData XML data + * @param ArchiMateImportScope $scope The import scope with the pre-built lookups * * @return array Processed objects */ - private function bulkProcessNonViewSections( - array $xmlData, - string $modelIdentifier, - array $propDefMap, - array $allLookups, - ): array { + private function bulkProcessNonViewSections(array $xmlData, ArchiMateImportScope $scope): array { $objects = []; $sections = [ @@ -4252,47 +4231,31 @@ private function bulkProcessNonViewSections( if ($sectionName === 'organizations') { $orgData = $this->findSectionData(xmlData: $xmlData, sectionName: 'organizations'); if (empty($orgData) === false) { - $syntheticId = 'org-' . preg_replace('/^id-/', '', $modelIdentifier); - $regId = $this->cachedConfig['registerId'] ?? throw new \RuntimeException('No register ID.'); - $orgSchemas = $this->cachedConfig['schemaIds']; - $schemaId = $orgSchemas['organization'] ?? throw new \RuntimeException('No org schema.'); - $objects[] = [ - '@self' => [ - 'register' => $regId, - 'schema' => $schemaId, - 'id' => $syntheticId, - 'owner' => $this->cachedConfig['userId'], - 'organisation' => $this->getCurrentOrganisation(), - 'published' => date('Y-m-d\TH:i:s\Z'), - ], - 'identifier' => $syntheticId, - 'section' => 'organization', - 'model_identifier' => $modelIdentifier, - 'name' => 'Organizations', - 'xml' => $orgData, - ]; - }//end if + $objects[] = $this->organisationTreeObject( + orgData: $orgData, + scope: $scope->withSection(section: $schemaType) + ); + } continue; - }//end if + } - if (empty($allLookups[$sectionName]) === true) { + $sectionItems = $scope->lookup(sectionName: $sectionName); + if (empty($sectionItems) === true) { continue; } $this->logger->debug( "SPEED: Bulk processing {$sectionName}", [ - 'item_count' => count($allLookups[$sectionName]), + 'item_count' => count($sectionItems), ] ); // SPEED OPTIMIZATION: Process all items in this section as a batch. $sectionObjects = $this->bulkTransformSection( - sectionItems: $allLookups[$sectionName], - schemaType: $schemaType, - modelIdentifier: $modelIdentifier, - propDefMap: $propDefMap + sectionItems: $sectionItems, + scope: $scope->withSection(section: $schemaType) ); $objects = array_merge($objects, $sectionObjects); @@ -4301,118 +4264,96 @@ private function bulkProcessNonViewSections( return $objects; }//end bulkProcessNonViewSections() + /** + * The organizations section as one tree object, so a round-trip export can rebuild the hierarchy. + * + * @param array $orgData The organizations section + * @param ArchiMateImportScope $scope The import scope for the organization section + * + * @return array The tree object + */ + private function organisationTreeObject(array $orgData, ArchiMateImportScope $scope): array { + $syntheticId = 'org-' . preg_replace('/^id-/', '', $scope->modelIdentifier()); + $head = [ + 'register' => $this->cachedConfig['registerId'] ?? throw new \RuntimeException('No register ID.'), + 'schema' => $this->cachedConfig['schemaIds']['organization'] ?? throw new \RuntimeException('No org schema.'), + 'id' => $syntheticId, + ]; + $object = $this->importObject(head: $head, scope: $scope); + $object['name'] = 'Organizations'; + $object['xml'] = $orgData; + + return $object; + }//end organisationTreeObject() + + /** + * A new import object: its @self block and its identifier, section and model. + * + * @param array{register: int, schema: int, id: mixed} $head The register, schema and id of the object + * @param ArchiMateImportScope $scope The import scope for the object's section + * + * @return array The object + */ + private function importObject(array $head, ArchiMateImportScope $scope): array { + return [ + '@self' => $head + [ + 'owner' => $this->cachedConfig['userId'], + 'organisation' => $this->getCurrentOrganisation(), + 'published' => date('Y-m-d\TH:i:s\Z'), + ], + 'identifier' => $head['id'], + 'section' => $scope->section(), + 'model_identifier' => $scope->modelIdentifier(), + ]; + }//end importObject() + /** * SPEED OPTIMIZATION: Bulk transform a section with vectorized operations * - * @param array $sectionItems Pre-loaded section items by identifier - * @param string $schemaType Schema type - * @param string $modelIdentifier Model identifier - * @param array $propDefMap Property definition map + * @param array $sectionItems Pre-loaded section items by identifier + * @param ArchiMateImportScope $scope The import scope for this section * * @return array Transformed objects */ - private function bulkTransformSection( - array $sectionItems, - string $schemaType, - string $modelIdentifier, - array $propDefMap, - ): array { + private function bulkTransformSection(array $sectionItems, ArchiMateImportScope $scope): array { $objects = []; + $schemaType = $scope->section(); foreach ($sectionItems as $identifier => $item) { // SPEED OPTIMIZATION: Direct object creation without intermediate steps. - $essentialXmlData = $this->extractEssentialXmlData(item: $item, elementsLookup: [], schemaType: $schemaType); + $essentialXmlData = $this->extractEssentialXmlData(item: $item); - $regId = $this->cachedConfig['registerId'] ?? throw new \RuntimeException('No register ID.'); - $sId = $this->cachedConfig['schemaIds'][$schemaType] ?? throw new \RuntimeException('No schema.'); - $object = [ - '@self' => [ - 'register' => $regId, - 'schema' => $sId, - 'id' => $identifier, - 'owner' => $this->cachedConfig['userId'], - 'organisation' => $this->getCurrentOrganisation(), - 'published' => date('Y-m-d\TH:i:s\Z'), - ], - 'identifier' => $identifier, - 'section' => $schemaType, - 'model_identifier' => $modelIdentifier, - 'xml' => $essentialXmlData, + $head = [ + 'register' => $this->cachedConfig['registerId'] ?? throw new \RuntimeException('No register ID.'), + 'schema' => $this->cachedConfig['schemaIds'][$schemaType] ?? throw new \RuntimeException('No schema.'), + 'id' => $identifier, ]; + $object = $this->importObject(head: $head, scope: $scope); + $object['xml'] = $essentialXmlData; - // Fast extract name and summary. - if (isset($item['name']) === true) { - if (is_array($item['name']) === true && isset($item['name']['_value']) === true) { - $object['name'] = $item['name']['_value']; - } else { - if (is_string($item['name']) === true) { - $object['name'] = $item['name']; - } else { - $object['name'] = ''; - } - } - } - - if (isset($item['documentation']) === true) { - if (is_array($item['documentation']) === true && isset($item['documentation']['_value']) === true) { - $object['omschrijving'] = $item['documentation']['_value']; - } else { - if (is_string($item['documentation']) === true) { - $object['omschrijving'] = $item['documentation']; - } else { - $object['omschrijving'] = ''; - } - } - } - - // Extract type from xsi:type attribute (e.g., "Capability", "ApplicationComponent"). - if (isset($item['_xsi__type']) === true) { - $object['type'] = $item['_xsi__type']; - } elseif (isset($item['_attributes']['xsi:type']) === true) { - $object['type'] = $item['_attributes']['xsi:type']; - } + $this->copyNameAndSummary(object: $object, item: $item); + $this->copyXsiType(object: $object, item: $item); // For relationships, extract source and target from attributes. if ($schemaType === 'relationship') { - if (isset($item['_source']) === true) { - $object['source'] = $item['_source']; - } elseif (isset($item['_attributes']['source']) === true) { - $object['source'] = $item['_attributes']['source']; - } - - if (isset($item['_target']) === true) { - $object['target'] = $item['_target']; - } elseif (isset($item['_attributes']['target']) === true) { - $object['target'] = $item['_attributes']['target']; - } + $this->copyRelationshipEnds(object: $object, item: $item); } // Fast flatten properties. - if (isset($item['properties']['property']) === true && empty($propDefMap) === false) { + if (isset($item['properties']['property']) === true && empty($scope->propDefMap()) === false) { $this->flattenPropertiesBatch( object: $object, - properties: $item['properties']['property'], - propDefMap: $propDefMap + scope: $scope->withProperties(properties: $item['properties']['property']) ); + } - // Fast ID/slug update. - if (isset($object['objectId']) === true) { - $object['@self']['id'] = $object['objectId']; - $object['@self']['slug'] = $identifier; - } else { - if (str_starts_with($identifier, 'id-') === true) { - $object['@self']['slug'] = substr($identifier, 3); - } else { - $object['@self']['slug'] = $identifier; - } - } + // Fast ID/slug update: a flattened "Object ID" becomes the id, the identifier its slug. + if (isset($object['objectId']) === true) { + $object['@self']['id'] = $object['objectId']; + $object['@self']['slug'] = $identifier; } else { - if (str_starts_with($identifier, 'id-') === true) { - $object['@self']['slug'] = substr($identifier, 3); - } else { - $object['@self']['slug'] = $identifier; - } - }//end if + $object['@self']['slug'] = $this->slugFromIdentifier(identifier: $identifier); + } $objects[] = $object; }//end foreach @@ -4420,27 +4361,54 @@ private function bulkTransformSection( return $objects; }//end bulkTransformSection() + /** + * Copy a relationship's source and target attributes onto the object. + * + * @param array $object The relationship object being built + * @param array $item The raw XML relationship + * + * @return void + */ + private function copyRelationshipEnds(array &$object, array $item): void { + foreach (['source', 'target'] as $end) { + if (isset($item['_' . $end]) === true) { + $object[$end] = $item['_' . $end]; + } elseif (isset($item['_attributes'][$end]) === true) { + $object[$end] = $item['_attributes'][$end]; + } + } + }//end copyRelationshipEnds() + + /** + * The slug of an AMEF identifier: the identifier without its "id-" prefix. + * + * @param string $identifier The AMEF identifier + * + * @return string The slug + */ + private function slugFromIdentifier(string $identifier): string { + if (str_starts_with($identifier, 'id-') === true) { + return substr($identifier, 3); + } + + return $identifier; + }//end slugFromIdentifier() + /** * SPEED OPTIMIZATION: Process views with maximum speed optimizations * - * @param array $xmlData XML data - * @param string $modelIdentifier Model identifier - * @param array $propDefMap Property definition map - * @param array $elementsLookup Elements lookup for splicing + * @param array $xmlData XML data + * @param ArchiMateImportScope $scope The import scope with the elements lookup for splicing * * @return array Processed view objects */ - private function processViewsMaximumSpeed( - array $xmlData, - string $modelIdentifier, - array $propDefMap, - array $elementsLookup, - ): array { + private function processViewsMaximumSpeed(array $xmlData, ArchiMateImportScope $scope): array { $viewsData = $this->findSectionData(xmlData: $xmlData, sectionName: 'views'); if (empty($viewsData) === true) { return []; } + $elementsLookup = $scope->elementsLookup(); $this->logger->info( 'SPEED MODE: Processing views with maximum optimizations', [ @@ -4470,28 +4438,19 @@ private function processViewsMaximumSpeed( // SPEED OPTIMIZATION: Process with bulk operations. return $this->bulkTransformViews( viewItems: $items, - modelIdentifier: $modelIdentifier, - propDefMap: $propDefMap, - elementsLookup: $filteredLookup + scope: $scope->withSection(section: 'view')->withElementsLookup(elementsLookup: $filteredLookup) ); }//end processViewsMaximumSpeed() /** * SPEED OPTIMIZATION: Bulk transform views with vectorized element splicing * - * @param array $viewItems View items to process - * @param string $modelIdentifier Model identifier - * @param array $propDefMap Property definition map - * @param array $elementsLookup Filtered elements lookup + * @param array $viewItems View items to process + * @param ArchiMateImportScope $scope The view scope with the filtered elements lookup * * @return array Processed view objects */ - private function bulkTransformViews( - array $viewItems, - string $modelIdentifier, - array $propDefMap, - array $elementsLookup, - ): array { + private function bulkTransformViews(array $viewItems, ArchiMateImportScope $scope): array { $objects = []; foreach ($viewItems as $item) { @@ -4507,79 +4466,35 @@ private function bulkTransformViews( // SPEED OPTIMIZATION: Direct processing with minimal overhead. $essentialXmlData = $this->extractEssentialXmlData( item: $item, - elementsLookup: $elementsLookup, - schemaType: 'view' + elementsLookup: $scope->elementsLookup() ); - $object = [ - '@self' => [ - 'register' => $this->cachedConfig['registerId'] ?? throw new \RuntimeException('No register ID.'), - 'schema' => $this->getSchemaIdForSection(section: 'view'), - 'id' => $identifier, - 'owner' => $this->cachedConfig['userId'], - 'organisation' => $this->getCurrentOrganisation(), - 'published' => date('Y-m-d\TH:i:s\Z'), - ], - 'identifier' => $identifier, - 'section' => 'view', - 'model_identifier' => $modelIdentifier, - 'xml' => $essentialXmlData, + $head = [ + 'register' => $this->cachedConfig['registerId'] ?? throw new \RuntimeException('No register ID.'), + 'schema' => $this->getSchemaIdForSection(section: 'view'), + 'id' => $identifier, ]; + $object = $this->importObject(head: $head, scope: $scope); + $object['xml'] = $essentialXmlData; - // Fast name/summary extraction. - if (isset($item['name']) === true) { - if (is_array($item['name']) === true && isset($item['name']['_value']) === true) { - $object['name'] = $item['name']['_value']; - } else { - if (is_string($item['name']) === true) { - $object['name'] = $item['name']; - } else { - $object['name'] = ''; - } - } - } - - if (isset($item['documentation']) === true) { - if (is_array($item['documentation']) === true && isset($item['documentation']['_value']) === true) { - $object['omschrijving'] = $item['documentation']['_value']; - } else { - if (is_string($item['documentation']) === true) { - $object['omschrijving'] = $item['documentation']; - } else { - $object['omschrijving'] = ''; - } - } - } - - // Extract type from xsi:type attribute. - if (isset($item['_xsi__type']) === true) { - $object['type'] = $item['_xsi__type']; - } elseif (isset($item['_attributes']['xsi:type']) === true) { - $object['type'] = $item['_attributes']['xsi:type']; - } + $this->copyNameAndSummary(object: $object, item: $item); + $this->copyXsiType(object: $object, item: $item); // Fast properties flattening. - if (isset($item['properties']['property']) === true && empty($propDefMap) === false) { + if (isset($item['properties']['property']) === true && empty($scope->propDefMap()) === false) { $this->flattenPropertiesBatch( object: $object, - properties: $item['properties']['property'], - propDefMap: $propDefMap + scope: $scope->withProperties(properties: $item['properties']['property']) ); - - // Keep @self.id as the full ArchiMate identifier (set above). - // so stored IDs match GEMMA Online URLs (id-e0f57689-...). - $object['@self']['slug'] = $identifier; - } else { - $object['@self']['slug'] = $identifier; } - // SPEED OPTIMIZATION: Direct copy without checks (we know it exists). - if (isset($object['xml']['viewNodes']) === true) { - $object['viewNodes'] = $object['xml']['viewNodes']; - } + // Keep @self.id as the full ArchiMate identifier, so stored IDs match GEMMA Online URLs (id-e0f57689-...). + $object['@self']['slug'] = $identifier; - if (isset($object['xml']['viewRelationships']) === true) { - $object['viewRelationships'] = $object['xml']['viewRelationships']; + foreach (['viewNodes', 'viewRelationships'] as $key) { + if (isset($object['xml'][$key]) === true) { + $object[$key] = $object['xml'][$key]; + } } $objects[] = $object; diff --git a/tests/Stubs/Service/OrganisationService.php b/tests/Stubs/Service/OrganisationService.php index 7f7a13e9d..d535023cf 100644 --- a/tests/Stubs/Service/OrganisationService.php +++ b/tests/Stubs/Service/OrganisationService.php @@ -39,6 +39,13 @@ abstract class OrganisationService { */ abstract public function getActiveOrganisation(): ?Organisation; + /** + * Get the default organisation, creating it when it does not exist yet. + * + * @return Organisation + */ + abstract public function ensureDefaultOrganisation(): Organisation; + /** * Get the caller's own organisations (session-scoped). * diff --git a/tests/Unit/Service/ArchiMateImportGoldenTest.php b/tests/Unit/Service/ArchiMateImportGoldenTest.php new file mode 100644 index 000000000..4a66fab39 --- /dev/null +++ b/tests/Unit/Service/ArchiMateImportGoldenTest.php @@ -0,0 +1,468 @@ +. + * Recorded with RECORD_GOLDEN=1. + * + * @category Test + * @package OCA\Stackiq\Tests\Unit\Service + * @author Conduction b.v. + * @copyright 2026 Conduction B.V. + * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * @link https://github.com/ConductionNL/stackiq + * + * @spec openspec/specs/archimate-import/spec.md + */ + +declare(strict_types=1); + +namespace OCA\Stackiq\Tests\Unit\Service; + +use OCA\OpenRegister\Contract\ObjectServiceInterface; +use OCA\OpenRegister\Db\Organisation; +use OCA\OpenRegister\Service\ObjectService; +use OCA\OpenRegister\Service\OrganisationService; +use OCA\Stackiq\Service\ArchiMateImportService; +use OCA\Stackiq\Service\ProgressTracker; +use OCA\Stackiq\Service\SettingsService; +use OCP\App\IAppManager; +use OCP\DB\IResult; +use OCP\IAppConfig; +use OCP\IDBConnection; +use OCP\IUser; +use OCP\IUserSession; +use PHPUnit\Framework\TestCase; +use Psr\Container\ContainerInterface; +use Psr\Log\AbstractLogger; + +/** + * Golden cases for the ArchiMate import. + * + * @covers \OCA\Stackiq\Service\ArchiMateImportService + * @uses \OCA\Stackiq\Service\ArchiMate\ArchiMateImportScope + * + * @spec openspec/specs/archimate-import/spec.md + */ +class ArchiMateImportGoldenTest extends TestCase { + + /** + * Context keys whose values depend on the clock or the memory of the run. + */ + private const VOLATILE = '/(time|seconds|memory|_mb$|cycles|per_second|percent|published|extracted_at|trace)/'; + + /** + * Schema ids the AMEF configuration names. + */ + private const AMEF_CONFIG = [ + 'register' => '7', + 'model_schema' => '10', + 'element_schema' => '11', + 'relation_schema' => '12', + 'view_schema' => '13', + 'organization_schema' => '14', + 'property_definition_schema' => '15', + ]; + + /** + * Everything the doubles saw, in order. + * + * @var array + */ + private array $trace = []; + + /** + * Per-case behaviour of the doubles. + * + * @var array + */ + private array $plan = []; + + /** + * The golden file. + * + * @return string + */ + private static function golden(): string { + return __DIR__ . '/golden/archiMateImport.json'; + + }//end golden() + + /** + * The cases: a fixture, an entry point and the behaviour of the doubles. + * + * @return array}> + */ + public static function cases(): array { + $data = __DIR__ . '/../../data/'; + $fixtures = __DIR__ . '/../../fixtures/archimate/'; + $golden = $data . 'archimate_golden.xml'; + return [ + 'sample optimized' => [$data . 'sample_archimate.xml', 'optimized', []], + 'sample classic' => [$data . 'sample_archimate.xml', 'classic', []], + 'golden optimized' => [$golden, 'optimized', []], + 'golden classic' => [$golden, 'classic', []], + 'golden optimized tracked' => [$golden, 'optimized', ['operationId' => 'archimate_import_golden01']], + 'golden optimized cancelled' => [$golden, 'optimized', ['operationId' => 'archimate_import_golden02', 'cancelOnCall' => 4]], + 'golden optimized failing save' => [$golden, 'optimized', ['failSchema' => 12]], + 'golden optimized no org' => [$golden, 'optimized', ['noOrganisation' => true]], + 'golden classic model exists' => [$golden, 'classic', ['modelExists' => true]], + 'golden classic no view schema' => [$golden, 'optimized', ['noViewSchema' => true]], + 'big1 optimized' => [$fixtures . 'big1.xml', 'optimized', []], + 'big1 classic' => [$fixtures . 'big1.xml', 'classic', []], + 'big2 optimized' => [$fixtures . 'big2.xml', 'optimized', []], + 'big2 classic' => [$fixtures . 'big2.xml', 'classic', []], + 'noorg optimized' => [$fixtures . 'noorg.xml', 'optimized', []], + 'noorg classic' => [$fixtures . 'noorg.xml', 'classic', []], + ]; + + }//end cases() + + /** + * Each case matches its recording. + * + * @param string $file The ArchiMate file. + * @param string $entry Which entry point runs. + * @param array $plan The behaviour of the doubles. + * + * @return void + * + * @dataProvider cases + */ + public function testImportMatchesTheRecording(string $file, string $entry, array $plan): void { + $this->plan = $plan; + $this->trace = []; + $service = $this->service(); + $options = ['file_path' => $file, 'fileName' => basename($file)]; + if (isset($plan['operationId']) === true) { + $options['operationId'] = $plan['operationId']; + } + + try { + if ($entry === 'optimized') { + $result = $service->importArchiMateFileFromPathOptimized($options); + } else { + $result = $service->importArchiMateFileFromPath($options); + } + } catch (\Throwable $e) { + $message = preg_replace('/ (called )?in \/\S+ on line \d+/', '', $e->getMessage()); + $result = ['escaped' => get_class($e), 'message' => $message]; + } + + $key = $entry . ' ' . basename($file) . ' ' . json_encode($plan); + $this->check(key: $key, value: ['result' => $result, 'calls' => $this->trace]); + + }//end testImportMatchesTheRecording() + + /** + * The service with recording doubles for every collaborator. + * + * @return ArchiMateImportService + */ + private function service(): ArchiMateImportService { + $config = $this->createMock(IAppConfig::class); + $config->method('getValueString')->willReturnCallback( + fn (string $app, string $key, string $default = '') => $key === 'amef_config' ? json_encode(self::AMEF_CONFIG) : $default + ); + + $user = $this->createMock(IUser::class); + $user->method('getUID')->willReturn('importer'); + $userSession = $this->createMock(IUserSession::class); + $userSession->method('getUser')->willReturn($user); + + $appManager = $this->createMock(IAppManager::class); + $appManager->method('isInstalled')->willReturn(true); + + $objectService = $this->objectService(); + $container = $this->createMock(ContainerInterface::class); + $container->method('get')->willReturnCallback( + fn (string $id) => $id === ObjectService::class ? $objectService : null + ); + + $settings = $this->createMock(SettingsService::class); + $settings->method('getSchemaIdForObjectType')->willReturnCallback( + function (string $type): ?int { + $this->trace[] = ['settings.getSchemaIdForObjectType', $type]; + if ($type === 'view' && isset($this->plan['noViewSchema']) === true) { + return null; + } + + $ids = ['model' => 10, 'element' => 11, 'relationship' => 12, 'view' => 13, 'organization' => 14, 'property_definition' => 15]; + return $ids[$type] ?? null; + } + ); + + return new ArchiMateImportService( + config: $config, + userSession: $userSession, + appManager: $appManager, + container: $container, + logger: $this->logger(), + settingsService: $settings, + organisationService: $this->organisationService(), + dbConnection: $this->database(), + progressTracker: $this->progressTracker() + ); + + }//end service() + + /** + * An object service that records the saves and the existence query. + * + * @return ObjectServiceInterface + */ + private function objectService(): ObjectServiceInterface { + $objectService = $this->createMock(ObjectServiceInterface::class); + $objectService->method('saveObjects')->willReturnCallback( + function (array $objects, $register, $schema, $rbac, $multitenancy, $validation, $events): array { + $this->trace[] = [ + 'objects.saveObjects', + [ + 'objects' => $objects, + 'register' => $register, + 'schema' => $schema, + '_rbac' => $rbac, + '_multitenancy' => $multitenancy, + 'validation' => $validation, + 'events' => $events, + ], + ]; + if (($this->plan['failSchema'] ?? null) === $schema) { + throw new \RuntimeException('save failed for schema ' . $schema); + } + + $ids = array_map(fn (array $object) => $this->savedEntity(id: $object['@self']['id'] ?? null), $objects); + return ['saved' => array_slice($ids, 1), 'updated' => array_slice($ids, 0, 1), 'unchanged' => [], 'invalid' => []]; + } + ); + $objectService->method('searchObjects')->willReturnCallback( + function (array $query): array { + $this->trace[] = ['objects.searchObjects', $query]; + if (isset($this->plan['modelExists']) === true) { + return [['id' => 'existing-model']]; + } + + return []; + } + ); + + return $objectService; + + }//end objectService() + + /** + * A saved object as the object service hands it back. + * + * @param string|null $id The object id. + * + * @return object + */ + private function savedEntity(?string $id): object { + return new class($id) implements \JsonSerializable { + /** + * Build the saved object. + * + * @param string|null $id The object id. + */ + public function __construct(private ?string $id) { + } + + /** + * @return string|null + */ + public function getUuid(): ?string { + return $this->id; + } + + /** + * @return array + */ + public function jsonSerialize(): array { + return ['id' => $this->id]; + } + }; + + }//end savedEntity() + + /** + * An organisation service that hands out the default organisation, or fails. + * + * @return OrganisationService + */ + private function organisationService(): OrganisationService { + $organisation = new Organisation(); + $organisation->setUuid('org-default'); + $service = $this->createMock(OrganisationService::class); + if (isset($this->plan['noOrganisation']) === true) { + $service->method('ensureDefaultOrganisation')->willThrowException(new \RuntimeException('no default organisation')); + return $service; + } + + $service->method('ensureDefaultOrganisation')->willReturn($organisation); + return $service; + + }//end organisationService() + + /** + * A database whose Standaard query returns one row and whose updates are recorded. + * + * @return IDBConnection + */ + private function database(): IDBConnection { + $rows = [['identifier' => 'id-std-1', '_uuid' => 'uuid-std-1']]; + $result = $this->createMock(IResult::class); + $result->method('fetch')->willReturnCallback( + function () use (&$rows) { + return array_shift($rows) ?? false; + } + ); + $database = $this->createMock(IDBConnection::class); + $database->method('executeQuery')->willReturnCallback( + function (string $sql) use ($result): IResult { + $this->trace[] = ['db.executeQuery', $sql]; + return $result; + } + ); + $database->method('executeStatement')->willReturnCallback( + function (string $sql, array $params = []): int { + $this->trace[] = ['db.executeStatement', $sql, $params]; + return 1; + } + ); + + return $database; + + }//end database() + + /** + * A progress tracker that records every call and cancels on the planned check. + * + * @return ProgressTracker + */ + private function progressTracker(): ProgressTracker { + $tracker = $this->createMock(ProgressTracker::class); + $tracker->method('startOperation')->willReturnCallback( + function (string $operationType, array $options = [], ?string $ownerUid = null, ?string $operationId = null): string { + $this->trace[] = ['progress.startOperation', $operationType, $operationId]; + return (string) $operationId; + } + ); + $checks = 0; + $tracker->method('isCancelRequested')->willReturnCallback( + function (string $operationId) use (&$checks): bool { + $checks++; + $this->trace[] = ['progress.isCancelRequested', $operationId, $checks]; + return $checks === ($this->plan['cancelOnCall'] ?? 0); + } + ); + foreach (['setPhase', 'updateProgress', 'completeOperation', 'failOperation', 'cancelOperation'] as $method) { + $tracker->method($method)->willReturnCallback( + function (...$args) use ($method): void { + $this->trace[] = ['progress.' . $method, $args]; + } + ); + } + + return $tracker; + + }//end progressTracker() + + /** + * A logger that records every line. + * + * @return AbstractLogger + */ + private function logger(): AbstractLogger { + $trace = &$this->trace; + return new class($trace) extends AbstractLogger { + /** + * Build the logger. + * + * @param array $trace The shared trace. + */ + public function __construct(private array &$trace) { + } + + /** + * Record one line. + * + * @param mixed $level The level. + * @param string|\Stringable $message The message. + * @param array $context The context. + * + * @return void + */ + public function log($level, string|\Stringable $message, array $context = []): void { + $message = (string) $message; + if (str_contains($message, '#0 ') === true) { + $message = ''; + } + + $this->trace[] = ['log.' . $level, $message, $context]; + } + }; + + }//end logger() + + /** + * Mask the values that depend on the clock or the memory of the run. + * + * @param mixed $value The recorded value. + * + * @return mixed + */ + private static function mask(mixed $value): mixed { + if (is_string($value) === true) { + return str_replace(dirname(__DIR__, 3), '', $value); + } + + if (is_array($value) === false) { + return $value; + } + + foreach ($value as $key => $item) { + if (is_string($key) === true && preg_match(self::VOLATILE, $key) === 1) { + $value[$key] = ''; + continue; + } + + $value[$key] = self::mask($item); + } + + return $value; + + }//end mask() + + /** + * Compare a case with the golden file, or record it. + * + * @param string $key The case. + * @param array $value What the case observed. + * + * @return void + */ + private function check(string $key, array $value): void { + $json = self::mask(json_decode(json_encode($value, JSON_PARTIAL_OUTPUT_ON_ERROR), true)); + $file = self::golden(); + $saved = []; + if (file_exists($file) === true) { + $saved = json_decode((string) file_get_contents($file), true); + } + + if (getenv('RECORD_GOLDEN') !== false) { + $saved[$key] = $json; + file_put_contents($file, json_encode($saved, (JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)) . "\n"); + $this->addToAssertionCount(count: 1); + return; + } + + $this->assertArrayHasKey(key: $key, array: $saved, message: 'No golden for ' . $key); + $this->assertSame(expected: $saved[$key], actual: $json); + + }//end check() + +}//end class diff --git a/tests/Unit/Service/ArchiMateImportProgressTest.php b/tests/Unit/Service/ArchiMateImportProgressTest.php index 458881ac4..d4d85f5fc 100644 --- a/tests/Unit/Service/ArchiMateImportProgressTest.php +++ b/tests/Unit/Service/ArchiMateImportProgressTest.php @@ -95,6 +95,7 @@ private function importService(ProgressTracker $tracker): ArchiMateImportService $values = [ 'logger' => $this->createMock(LoggerInterface::class), 'progressTracker' => $tracker, + 'cachedConfig' => ['registerId' => 1], ]; foreach ($values as $prop => $value) { (new \ReflectionProperty(ArchiMateImportService::class, $prop))->setValue($service, $value); @@ -136,7 +137,7 @@ function (array $objects) use (&$seen): array { ); $method = new \ReflectionMethod($service, 'saveSchemaGroups'); - $method->invoke($service, $this->schemaGroups(), $objectService, 1); + $method->invoke($service, $this->schemaGroups(), $objectService); // Before the first save nothing was saved, before the second the first group's three were. $this->assertSame([0, 3], $seen); @@ -164,7 +165,7 @@ function (array $objects): array { ); $method = new \ReflectionMethod($service, 'saveSchemaGroups'); - $result = $method->invoke($service, $this->schemaGroups(), $objectService, 1); + $result = $method->invoke($service, $this->schemaGroups(), $objectService); $this->assertTrue($service->wasCancelled()); $this->assertCount(3, $result['stats']['saved']); @@ -206,7 +207,7 @@ public function testAnOperationIdOutsideThePatternIsIgnored(): void { $objectService->expects($this->exactly(2))->method('saveObjects')->willReturn( ['saved' => [], 'updated' => [], 'unchanged' => [], 'invalid' => []] ); - (new \ReflectionMethod($service, 'saveSchemaGroups'))->invoke($service, $this->schemaGroups(), $objectService, 1); + (new \ReflectionMethod($service, 'saveSchemaGroups'))->invoke($service, $this->schemaGroups(), $objectService); $this->assertFalse($service->wasCancelled()); }//end testAnOperationIdOutsideThePatternIsIgnored() }//end class diff --git a/tests/Unit/Service/golden/archiMateImport.json b/tests/Unit/Service/golden/archiMateImport.json new file mode 100644 index 000000000..1c7cde5f9 --- /dev/null +++ b/tests/Unit/Service/golden/archiMateImport.json @@ -0,0 +1,27661 @@ +{ + "optimized sample_archimate.xml []": { + "result": { + "success": true, + "file_info": { + "name": "sample_archimate.xml", + "size": 1111 + }, + "performance_metrics": { + "total_time_seconds": "", + "items_per_second": "", + "objects_processed": 5, + "timing_breakdown": { + "cache_initialization_seconds": "", + "xml_parsing_seconds": "", + "memory_cleanup_seconds": "", + "model_identifier_extraction_seconds": "", + "data_transformation_seconds": "", + "database_save_seconds": "" + }, + "save_operation_breakdown": { + "total_save_seconds": "", + "service_init_seconds": "", + "gemma_processing_seconds": "", + "batch_processing_seconds": "", + "objects_saved": 5, + "save_rate_objects_per_second": "" + }, + "memory_usage": "", + "processing_rates": { + "xml_parse_objects_per_second": "", + "transform_objects_per_second": "", + "save_objects_per_second": "" + } + }, + "statistics": { + "elements": { + "created": 1, + "updated": 2, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 1, + "total_objects_updated": 4, + "total_objects_deleted": 0, + "total_objects_unchanged": 0, + "total_errors": 0 + } + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../data/sample_archimate.xml", + "fileName": "sample_archimate.xml" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_name", + "_attributes", + "___identifier", + "___name", + "elements", + "relationships", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "test-model" + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "test-model" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 2, + "relationships_count": 1, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 2 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing relationships", + { + "item_count": 1 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 2, + "sample_identifiers": [ + "test-element-1", + "test-element-2" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 2 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 2, + "referenced_elements": 0, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Memory cleanup before database operations", + { + "memory_freed_mb": "", + "gc_cycles_collected": "", + "memory_before_mb": "", + "memory_after_mb": "" + } + ], + [ + "log.info", + "GEMMA IMPORT DEBUG: About to save objects to database", + { + "object_count": 5 + } + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 5, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.debug", + "GEMMA Type property found", + { + "property_name": "type", + "value": "archimate:BusinessActor", + "object_id": "test-element-1" + } + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 2, + "elements_with_gemma_type": 2, + "gemma_type_variations": { + "archimate:BusinessActor": 1, + "archimate:BusinessRole": 1 + }, + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 4, + "schemas": { + "10": 1, + "11": 2, + "12": 1, + "13": 1 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "test-model", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "test-model", + "section": "model", + "model_identifier": "test-model", + "xml": { + "name": "Test ArchiMate Model", + "documentation": "", + "properties": [], + "propertyDefinitionMap": [] + }, + "name": "Test ArchiMate Model", + "documentation": "", + "properties": [], + "propertyDefinitionMap": [], + ":identifier": "test-model", + ":name": "Test ArchiMate Model" + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "test-element-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "test-element-1" + }, + "identifier": "test-element-1", + "section": "element", + "model_identifier": "test-model", + "xml": { + "_attributes": { + "identifier": "test-element-1", + ":identifier": "test-element-1", + "xsi:type": "archimate:BusinessActor" + }, + "name": { + "_value": "Test Business Actor" + }, + "properties": { + "property": { + "_identifier": "test-prop-1", + "_attributes": { + "identifier": "test-prop-1", + ":identifier": "test-prop-1" + }, + "___identifier": "test-prop-1", + "value": { + "_value": "Test Property Value" + } + } + }, + "_essential_data": true + }, + "name": "Test Business Actor", + "type": "archimate:BusinessActor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "test-element-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "test-element-2" + }, + "identifier": "test-element-2", + "section": "element", + "model_identifier": "test-model", + "xml": { + "_attributes": { + "identifier": "test-element-2", + ":identifier": "test-element-2", + "xsi:type": "archimate:BusinessRole" + }, + "name": { + "_value": "Test Business Role" + }, + "_essential_data": true + }, + "name": "Test Business Role", + "type": "archimate:BusinessRole" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "test-rel-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "test-rel-1" + }, + "identifier": "test-rel-1", + "section": "relationship", + "model_identifier": "test-model", + "xml": { + "_attributes": { + "identifier": "test-rel-1", + ":identifier": "test-rel-1", + "xsi:type": "archimate:AssignmentRelationship" + }, + "name": { + "_value": "Test Assignment" + }, + "source": { + "element": { + "_ref": "test-element-1", + "_attributes": { + "ref": "test-element-1", + ":ref": "test-element-1" + }, + "___ref": "test-element-1" + } + }, + "target": { + "element": { + "_ref": "test-element-2", + "_attributes": { + "ref": "test-element-2", + ":ref": "test-element-2" + }, + "___ref": "test-element-2" + } + }, + "_essential_data": true + }, + "name": "Test Assignment", + "type": "archimate:AssignmentRelationship" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "test-view-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "test-view-1" + }, + "identifier": "test-view-1", + "section": "view", + "model_identifier": "test-model", + "xml": { + "_attributes": { + "identifier": "test-view-1", + ":identifier": "test-view-1", + "xsi:type": "archimate:ArchimateDiagramModel" + }, + "name": { + "_value": "Test View" + }, + "_essential_data": true + }, + "name": "Test View", + "type": "archimate:ArchimateDiagramModel" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ] + ] + }, + "classic sample_archimate.xml []": { + "result": { + "success": true, + "file_info": { + "name": "sample_archimate.xml", + "size": 1111, + "mime_type": "text/xml" + }, + "processing_times": "", + "memory_usage": "", + "statistics": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 5, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 5, + "total_errors": 0 + } + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 5, + "total_errors": 0 + }, + "performance_metrics": { + "items_per_second": "", + "processing_method": "synchronous_batch_processing", + "batch_size_used": 100, + "dataset_size": 0 + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Step 1: Parsing XML to array for complete data capture", + { + "filePath": "/tests/Unit/Service/../../data/sample_archimate.xml" + } + ], + [ + "log.info", + "Step 2: Extracting model identifier and checking for existing model", + [] + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_name", + "_attributes", + "___identifier", + "___name", + "elements", + "relationships", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "test-model" + } + ], + [ + "log.debug", + "Checking if model already exists", + { + "model_identifier": "test-model" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "objects.searchObjects", + { + "@self": { + "register": 7, + "schema": 10 + }, + "archimate_id": "test-model", + "_limit": 1 + } + ], + [ + "log.info", + "Model existence check completed", + { + "model_identifier": "test-model", + "exists": false, + "found_count": 0, + "registerId": 7, + "schemaId": 10 + } + ], + [ + "log.info", + "Step 3: Normalizing data structure for JSON blob storage", + [] + ], + [ + "log.info", + "Normalizing ArchiMate data structure for JSON blob storage", + { + "model_identifier": "test-model" + } + ], + [ + "log.debug", + "Extracted model metadata", + { + "metadata_keys": [ + "identifier", + "name", + ":identifier", + ":name", + "propertyDefinitionMap" + ], + "has_name": true, + "has_documentation": false + } + ], + [ + "log.info", + "Data normalization completed", + { + "model_identifier": "test-model", + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ], + "round_trip_fidelity": "enabled" + } + ], + [ + "log.info", + "Step 4: Converting to OpenRegister objects with @self structure", + [] + ], + [ + "log.info", + "Converting to OpenRegister objects with @self structure", + { + "model_identifier": "test-model" + } + ], + [ + "log.debug", + "Creating model object from metadata", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Sections processed", + { + "elements": 2, + "relationships": 1, + "organizations": 0, + "views": 1, + "property_definitions": 0 + } + ], + [ + "log.info", + "Conversion to OpenRegister objects completed", + { + "model_identifier": "test-model", + "total_objects": 5, + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ] + } + ], + [ + "log.info", + "Step 5: Saving objects to database using ObjectService::saveObjects", + [] + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 5, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 0, + "elements_with_gemma_type": 0, + "gemma_type_variations": [], + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 4, + "schemas": { + "10": 1, + "11": 2, + "12": 1, + "13": 1 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "test-model", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "test-model", + "section": "model", + "model_identifier": "test-model", + "xml": { + "name": "Test ArchiMate Model", + "propertyDefinitionMap": [] + }, + "name": "Test ArchiMate Model", + ":identifier": "test-model", + ":name": "Test ArchiMate Model", + "propertyDefinitionMap": [] + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "test-element-1", + "slug": "test-element-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "test-element-1", + "section": "elements", + "model_identifier": "test-model", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "test-element-1", + ":identifier": "test-element-1", + "xsi:type": "archimate:BusinessActor" + }, + "name": { + "_value": "Test Business Actor" + }, + "properties": { + "property": { + "_identifier": "test-prop-1", + "_attributes": { + "identifier": "test-prop-1", + ":identifier": "test-prop-1" + }, + "___identifier": "test-prop-1", + "value": { + "_value": "Test Property Value" + } + } + }, + "_essential_data": true + }, + "type": "archimate:BusinessActor", + "name": "Test Business Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "test-element-2", + "slug": "test-element-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "test-element-2", + "section": "elements", + "model_identifier": "test-model", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "test-element-2", + ":identifier": "test-element-2", + "xsi:type": "archimate:BusinessRole" + }, + "name": { + "_value": "Test Business Role" + }, + "_essential_data": true + }, + "type": "archimate:BusinessRole", + "name": "Test Business Role" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "test-rel-1", + "slug": "test-rel-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "test-rel-1", + "section": "relationships", + "model_identifier": "test-model", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "test-rel-1", + ":identifier": "test-rel-1", + "xsi:type": "archimate:AssignmentRelationship" + }, + "name": { + "_value": "Test Assignment" + }, + "source": { + "element": { + "_ref": "test-element-1", + "_attributes": { + "ref": "test-element-1", + ":ref": "test-element-1" + }, + "___ref": "test-element-1" + } + }, + "target": { + "element": { + "_ref": "test-element-2", + "_attributes": { + "ref": "test-element-2", + ":ref": "test-element-2" + }, + "___ref": "test-element-2" + } + }, + "_essential_data": true + }, + "type": "archimate:AssignmentRelationship", + "name": "Test Assignment" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "test-view-1", + "slug": "test-view-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "test-view-1", + "section": "views", + "model_identifier": "test-model", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "test-view-1", + ":identifier": "test-view-1", + "xsi:type": "archimate:ArchimateDiagramModel" + }, + "name": { + "_value": "Test View" + }, + "_essential_data": true + }, + "type": "archimate:ArchimateDiagramModel", + "name": "Test View" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ], + [ + "log.info", + "[ArchiMate] Using lastSaveResult for statistics", + { + "saved_count": 1, + "updated_count": 4, + "unchanged_count": 0, + "invalid_count": 0, + "keys_present": [ + "saved", + "updated", + "unchanged", + "invalid", + "countsBySchema" + ] + } + ], + [ + "log.info", + "[ArchiMate] Statistics summary calculated", + { + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 5, + "total_errors": 0 + }, + "section_counts": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 5, + "errors": 0 + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + } + } + } + ], + [ + "log.info", + "ArchiMate XML import completed successfully", + { + "model_identifier": "test-model", + "model_exists": false, + "imported_objects": 0, + "round_trip_fidelity": "enabled" + } + ] + ] + }, + "optimized archimate_golden.xml []": { + "result": { + "success": true, + "file_info": { + "name": "archimate_golden.xml", + "size": 5163 + }, + "performance_metrics": { + "total_time_seconds": "", + "items_per_second": "", + "objects_processed": 16, + "timing_breakdown": { + "cache_initialization_seconds": "", + "xml_parsing_seconds": "", + "memory_cleanup_seconds": "", + "model_identifier_extraction_seconds": "", + "data_transformation_seconds": "", + "database_save_seconds": "" + }, + "save_operation_breakdown": { + "total_save_seconds": "", + "service_init_seconds": "", + "gemma_processing_seconds": "", + "batch_processing_seconds": "", + "objects_saved": 16, + "save_rate_objects_per_second": "" + }, + "memory_usage": "", + "processing_rates": { + "xml_parse_objects_per_second": "", + "transform_objects_per_second": "", + "save_objects_per_second": "" + } + }, + "statistics": { + "elements": { + "created": 4, + "updated": 2, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 1, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 1, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 4, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 10, + "total_objects_updated": 6, + "total_objects_deleted": 0, + "total_objects_unchanged": 0, + "total_errors": 0 + } + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../data/archimate_golden.xml", + "fileName": "archimate_golden.xml" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "documentation", + "properties", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-model-golden" + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "id-model-golden" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 5, + "relationships_count": 2, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-1", + "properties_count": 6, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-1", + "property_name": "Referentie soort", + "camel_case_name": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + [ + "log.warning", + "Property definition not found in map", + { + "object_id": "id-el-1", + "property_def_ref": "propid-99", + "available_refs": [ + "propid-1", + "propid-2", + "propid-3", + "propid-4", + "propid-5" + ] + } + ], + [ + "log.warning", + "Property missing propertyDefinitionRef", + { + "object_id": "id-el-1", + "property_index": 4, + "property_structure": [ + "value" + ] + } + ], + [ + "log.warning", + "Property value is null", + { + "object_id": "id-el-1", + "property_def_ref": "propid-4", + "value": null + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-1", + "processed_count": 3, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-1", + "def_ref": "propid-1" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Backoffice", + "def_ref": "propid-2" + }, + { + "original": "Referentie soort", + "camelCase": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "objectId", + "_propertyMapping", + "businessUnit", + "referentieSoort" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-2", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-2", + "processed_count": 1, + "processed_properties": [ + { + "original": "Remark", + "camelCase": "remark", + "value": "single", + "def_ref": "propid-4" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "remark", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-4", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-4", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-4", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-5", + "properties_count": 2, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-5", + "property_name": "Gemma Online URL", + "camel_case_name": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-5", + "processed_count": 2, + "processed_properties": [ + { + "original": "Gemma Online URL", + "camelCase": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Second unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "gemmaOnlineUrl", + "_propertyMapping", + "businessUnit" + ] + } + ], + [ + "log.debug", + "SPEED: Bulk processing relationships", + { + "item_count": 2 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-rel-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-rel-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-rel-1", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "source", + "target", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing property_definitions", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 5, + "sample_identifiers": [ + "id-el-1", + "id-el-2", + "el-3", + "id-el-4", + "id-el-5" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 5 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 5, + "referenced_elements": 2, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-view-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-view-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "View unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "businessUnit", + "_propertyMapping" + ] + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Memory cleanup before database operations", + { + "memory_freed_mb": "", + "gc_cycles_collected": "", + "memory_before_mb": "", + "memory_after_mb": "" + } + ], + [ + "log.info", + "GEMMA IMPORT DEBUG: About to save objects to database", + { + "object_count": 16 + } + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 16, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.debug", + "GEMMA Type property found", + { + "property_name": "type", + "value": "ApplicationComponent", + "object_id": "id-el-1" + } + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 5, + "elements_with_gemma_type": 5, + "gemma_type_variations": { + "ApplicationComponent": 1, + "Capability": 1, + "BusinessActor": 1, + "DataObject": 1, + "Grouping": 1 + }, + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 5, + "12": 2, + "14": 1, + "15": 5, + "13": 2 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-model-golden", + "section": "model", + "model_identifier": "id-model-golden", + "xml": { + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Golden model" + }, + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + }, + "name": "Golden model", + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + }, + ":identifier": "id-model-golden" + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-el-1" + }, + "identifier": "id-el-1", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-1", + ":identifier": "id-el-1", + "xsi:type": "ApplicationComponent" + }, + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Zaaksysteem" + }, + "documentation": { + "_value": "Handles cases" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-1" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Backoffice" + } + }, + { + "_propertyDefinitionRef": "propid-3", + "_attributes": { + "propertyDefinitionRef": "propid-3", + ":propertyDefinitionRef": "propid-3" + }, + "___propertyDefinitionRef": "propid-3", + "value": { + "_value": "Referentiecomponent" + } + }, + { + "_propertyDefinitionRef": "propid-99", + "_attributes": { + "propertyDefinitionRef": "propid-99", + ":propertyDefinitionRef": "propid-99" + }, + "___propertyDefinitionRef": "propid-99", + "value": { + "_value": "Unknown definition" + } + }, + { + "value": { + "_value": "No definition ref" + } + }, + { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4" + } + ] + }, + "_essential_data": true + }, + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "_propertyMapping": { + "objectId": "Object ID", + "businessUnit": "Business Unit", + "referentieSoort": "Referentie soort" + }, + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-2" + }, + "identifier": "id-el-2", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-2", + ":identifier": "id-el-2", + "xsi:type": "Capability" + }, + "name": { + "_value": "Zaakgericht werken" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4", + "value": { + "_value": "single" + } + } + }, + "_essential_data": true + }, + "name": "Zaakgericht werken", + "type": "Capability", + "remark": "single", + "_propertyMapping": { + "remark": "Remark" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-3" + }, + "identifier": "el-3", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "el-3", + ":identifier": "el-3", + "xsi:type": "BusinessActor" + }, + "name": [], + "documentation": [], + "_essential_data": true + }, + "name": "", + "omschrijving": "", + "type": "BusinessActor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-el-4" + }, + "identifier": "id-el-4", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-4", + ":identifier": "id-el-4", + "xsi:type": "DataObject" + }, + "name": { + "_value": "Zaakdossier" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-4" + } + } + }, + "_essential_data": true + }, + "name": "Zaakdossier", + "type": "DataObject", + "objectId": "uuid-el-4", + "_propertyMapping": { + "objectId": "Object ID" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-5" + }, + "identifier": "id-el-5", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-5", + ":identifier": "id-el-5", + "xsi:type": "Grouping" + }, + "name": { + "_value": "Standaard groep" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-5", + "_attributes": { + "propertyDefinitionRef": "propid-5", + ":propertyDefinitionRef": "propid-5" + }, + "___propertyDefinitionRef": "propid-5", + "value": { + "_value": "Gemma waarde" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Second unit" + } + } + ] + }, + "_essential_data": true + }, + "name": "Standaard groep", + "type": "Grouping", + "gemmaOnlineUrl": "Gemma waarde", + "_propertyMapping": { + "gemmaOnlineUrl": "Gemma Online URL", + "businessUnit": "Business Unit" + }, + "businessUnit": "Second unit" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "uuid-rel-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-rel-1" + }, + "identifier": "id-rel-1", + "section": "relationship", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-rel-1", + "source": "id-el-1", + "target": "id-el-2", + ":identifier": "id-rel-1", + ":source": "id-el-1", + ":target": "id-el-2", + "xsi:type": "Serving" + }, + "name": { + "_value": "serves" + }, + "documentation": { + "_value": "Serving relation" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-rel-1" + } + } + }, + "_essential_data": true + }, + "name": "serves", + "omschrijving": "Serving relation", + "type": "Serving", + "source": "id-el-1", + "target": "id-el-2", + "objectId": "uuid-rel-1", + "_propertyMapping": { + "objectId": "Object ID" + } + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-2" + }, + "identifier": "rel-2", + "section": "relationship", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "rel-2", + "source": "el-3", + "target": "id-el-4", + ":identifier": "rel-2", + ":source": "el-3", + ":target": "id-el-4", + "xsi:type": "Association" + }, + "_essential_data": true + }, + "type": "Association", + "source": "el-3", + "target": "id-el-4" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "org-model-golden", + "section": "organization", + "model_identifier": "id-model-golden", + "name": "Organizations", + "xml": { + "item": [ + { + "label": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Business" + }, + "item": [ + { + "_identifierRef": "id-el-1", + "_attributes": { + "identifierRef": "id-el-1", + ":identifierRef": "id-el-1" + }, + "___identifierRef": "id-el-1" + }, + { + "label": { + "_value": "Nested" + }, + "item": { + "_identifierRef": "id-el-2", + "_attributes": { + "identifierRef": "id-el-2", + ":identifierRef": "id-el-2" + }, + "___identifierRef": "id-el-2" + } + } + ] + }, + { + "label": { + "_value": "Relations" + }, + "item": { + "_identifierRef": "id-rel-1", + "_attributes": { + "identifierRef": "id-rel-1", + ":identifierRef": "id-rel-1" + }, + "___identifierRef": "id-rel-1" + } + } + ] + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-1" + }, + "identifier": "propid-1", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-1", + "type": "string", + ":identifier": "propid-1", + ":type": "string" + }, + "name": { + "_value": "Object ID" + }, + "_essential_data": true + }, + "name": "Object ID" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-2" + }, + "identifier": "propid-2", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-2", + "type": "string", + ":identifier": "propid-2", + ":type": "string" + }, + "name": { + "_value": "Business Unit" + }, + "_essential_data": true + }, + "name": "Business Unit" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-3" + }, + "identifier": "propid-3", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-3", + "type": "string", + ":identifier": "propid-3", + ":type": "string" + }, + "name": { + "_value": "Referentie soort" + }, + "_essential_data": true + }, + "name": "Referentie soort" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-4" + }, + "identifier": "propid-4", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-4", + "type": "string", + ":identifier": "propid-4", + ":type": "string" + }, + "name": { + "_value": "Remark" + }, + "_essential_data": true + }, + "name": "Remark" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-5" + }, + "identifier": "propid-5", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-5", + "type": "string", + ":identifier": "propid-5", + ":type": "string" + }, + "name": { + "_value": "Gemma Online URL" + }, + "_essential_data": true + }, + "name": "Gemma Online URL" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "id-view-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-view-1" + }, + "identifier": "id-view-1", + "section": "view", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-view-1", + "viewpoint": "Layered", + ":identifier": "id-view-1", + ":viewpoint": "Layered", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Overview" + }, + "documentation": { + "_value": "Main view" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "View unit" + } + } + }, + "node": [ + { + "_identifier": "id-node-1", + "_elementRef": "id-el-1", + "_x": "10", + "_y": "20", + "_w": "120", + "_h": "55", + "_attributes": { + "identifier": "id-node-1", + "elementRef": "id-el-1", + "x": "10", + "y": "20", + "w": "120", + "h": "55", + ":identifier": "id-node-1", + ":elementRef": "id-el-1", + ":x": "10", + ":y": "20", + ":w": "120", + ":h": "55", + "xsi:type": "Element" + }, + "___identifier": "id-node-1", + "___elementRef": "id-el-1", + "___x": "10", + "___y": "20", + "___w": "120", + "___h": "55", + "_xsi__type": "Element", + "style": { + "fillColor": { + "_r": "255", + "_g": "255", + "_b": "181", + "_a": "100", + "_attributes": { + "r": "255", + "g": "255", + "b": "181", + "a": "100", + ":r": "255", + ":g": "255", + ":b": "181", + ":a": "100" + }, + "___r": "255", + "___g": "255", + "___b": "181", + "___a": "100" + }, + "lineColor": { + "_r": "92", + "_g": "92", + "_b": "92", + "_attributes": { + "r": "92", + "g": "92", + "b": "92", + ":r": "92", + ":g": "92", + ":b": "92" + }, + "___r": "92", + "___g": "92", + "___b": "92" + }, + "font": { + "_name": "Segoe UI", + "_size": "9", + "_attributes": { + "name": "Segoe UI", + "size": "9", + ":name": "Segoe UI", + ":size": "9" + }, + "___name": "Segoe UI", + "___size": "9", + "color": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + } + }, + "node": { + "_identifier": "id-node-2", + "_elementRef": "id-el-2", + "_x": "20", + "_y": "30", + "_w": "60", + "_h": "40", + "_attributes": { + "identifier": "id-node-2", + "elementRef": "id-el-2", + "x": "20", + "y": "30", + "w": "60", + "h": "40", + ":identifier": "id-node-2", + ":elementRef": "id-el-2", + ":x": "20", + ":y": "30", + ":w": "60", + ":h": "40", + "xsi:type": "Element" + }, + "___identifier": "id-node-2", + "___elementRef": "id-el-2", + "___x": "20", + "___y": "30", + "___w": "60", + "___h": "40", + "_xsi__type": "Element" + } + }, + { + "_identifier": "id-node-3", + "_x": "200", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-3", + "x": "200", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-3", + ":x": "200", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Label" + }, + "___identifier": "id-node-3", + "___x": "200", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Label", + "label": { + "_value": "A note" + } + }, + { + "_identifier": "id-node-4", + "_elementRef": "id-el-missing", + "_x": "300", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-4", + "elementRef": "id-el-missing", + "x": "300", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-4", + ":elementRef": "id-el-missing", + ":x": "300", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Element" + }, + "___identifier": "id-node-4", + "___elementRef": "id-el-missing", + "___x": "300", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Element" + } + ], + "connection": { + "_identifier": "id-conn-1", + "_relationshipRef": "id-rel-1", + "_source": "id-node-1", + "_target": "id-node-2", + "_attributes": { + "identifier": "id-conn-1", + "relationshipRef": "id-rel-1", + "source": "id-node-1", + "target": "id-node-2", + ":identifier": "id-conn-1", + ":relationshipRef": "id-rel-1", + ":source": "id-node-1", + ":target": "id-node-2", + "xsi:type": "Relationship" + }, + "___identifier": "id-conn-1", + "___relationshipRef": "id-rel-1", + "___source": "id-node-1", + "___target": "id-node-2", + "_xsi__type": "Relationship", + "style": { + "lineColor": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + }, + "bendpoint": { + "_x": "50", + "_y": "60", + "_attributes": { + "x": "50", + "y": "60", + ":x": "50", + ":y": "60" + }, + "___x": "50", + "___y": "60" + } + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": "Zaaksysteem", + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": "Handles cases", + "elementRef": "id-el-1", + "elementProperties": { + "identifier": "id-el-1", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "section": "element", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + "objectId": "uuid-el-1", + "elementSection": "element" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": "Zaakgericht werken", + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2", + "elementProperties": { + "identifier": "id-el-2", + "name": "Zaakgericht werken", + "section": "element", + "type": "Capability", + "remark": "single" + }, + "elementSection": "element" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ], + "_essential_data": true + }, + "name": "Overview", + "omschrijving": "Main view", + "type": "Diagram", + "businessUnit": "View unit", + "_propertyMapping": { + "businessUnit": "Business Unit" + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": "Zaaksysteem", + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": "Handles cases", + "elementRef": "id-el-1", + "elementProperties": { + "identifier": "id-el-1", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "section": "element", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + "objectId": "uuid-el-1", + "elementSection": "element" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": "Zaakgericht werken", + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2", + "elementProperties": { + "identifier": "id-el-2", + "name": "Zaakgericht werken", + "section": "element", + "type": "Capability", + "remark": "single" + }, + "elementSection": "element" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ] + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-2" + }, + "identifier": "view-2", + "section": "view", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Empty view" + }, + "_essential_data": true + }, + "name": "Empty view", + "type": "Diagram" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ] + ] + }, + "classic archimate_golden.xml []": { + "result": { + "success": true, + "file_info": { + "name": "archimate_golden.xml", + "size": 5163, + "mime_type": "text/xml" + }, + "processing_times": "", + "memory_usage": "", + "statistics": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 16, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 16, + "total_errors": 0 + } + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 16, + "total_errors": 0 + }, + "performance_metrics": { + "items_per_second": "", + "processing_method": "synchronous_batch_processing", + "batch_size_used": 100, + "dataset_size": 0 + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Step 1: Parsing XML to array for complete data capture", + { + "filePath": "/tests/Unit/Service/../../data/archimate_golden.xml" + } + ], + [ + "log.info", + "Step 2: Extracting model identifier and checking for existing model", + [] + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "documentation", + "properties", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-model-golden" + } + ], + [ + "log.debug", + "Checking if model already exists", + { + "model_identifier": "id-model-golden" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "objects.searchObjects", + { + "@self": { + "register": 7, + "schema": 10 + }, + "archimate_id": "id-model-golden", + "_limit": 1 + } + ], + [ + "log.info", + "Model existence check completed", + { + "model_identifier": "id-model-golden", + "exists": false, + "found_count": 0, + "registerId": 7, + "schemaId": 10 + } + ], + [ + "log.info", + "Step 3: Normalizing data structure for JSON blob storage", + [] + ], + [ + "log.info", + "Normalizing ArchiMate data structure for JSON blob storage", + { + "model_identifier": "id-model-golden" + } + ], + [ + "log.info", + "Property definitions extracted and mapped", + { + "total_properties": 5, + "property_mapping": { + "Object ID": "objectId", + "Business Unit": "businessUnit", + "Referentie soort": "referentieSoort", + "Remark": "remark", + "Gemma Online URL": "gemmaOnlineUrl" + } + } + ], + [ + "log.debug", + "Extracted model metadata", + { + "metadata_keys": [ + "identifier", + ":identifier", + "name", + "documentation", + "properties", + "propertyDefinitionMap" + ], + "has_name": true, + "has_documentation": true + } + ], + [ + "log.info", + "Data normalization completed", + { + "model_identifier": "id-model-golden", + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ], + "round_trip_fidelity": "enabled" + } + ], + [ + "log.info", + "Step 4: Converting to OpenRegister objects with @self structure", + [] + ], + [ + "log.info", + "Converting to OpenRegister objects with @self structure", + { + "model_identifier": "id-model-golden" + } + ], + [ + "log.debug", + "Creating model object from metadata", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "organization" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Sections processed", + { + "elements": 5, + "relationships": 2, + "organizations": 1, + "views": 2, + "property_definitions": 5 + } + ], + [ + "log.info", + "Conversion to OpenRegister objects completed", + { + "model_identifier": "id-model-golden", + "total_objects": 16, + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ] + } + ], + [ + "log.info", + "Step 5: Saving objects to database using ObjectService::saveObjects", + [] + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 16, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 0, + "elements_with_gemma_type": 0, + "gemma_type_variations": [], + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 5, + "12": 2, + "14": 1, + "13": 2, + "15": 5 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-model-golden", + "section": "model", + "model_identifier": "id-model-golden", + "xml": { + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Golden model" + }, + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + }, + ":identifier": "id-model-golden", + "name": "Golden model", + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-1", + "slug": "id-el-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-el-1", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-el-1", + ":identifier": "id-el-1", + "xsi:type": "ApplicationComponent" + }, + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Zaaksysteem" + }, + "documentation": { + "_value": "Handles cases" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-1" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Backoffice" + } + }, + { + "_propertyDefinitionRef": "propid-3", + "_attributes": { + "propertyDefinitionRef": "propid-3", + ":propertyDefinitionRef": "propid-3" + }, + "___propertyDefinitionRef": "propid-3", + "value": { + "_value": "Referentiecomponent" + } + }, + { + "_propertyDefinitionRef": "propid-99", + "_attributes": { + "propertyDefinitionRef": "propid-99", + ":propertyDefinitionRef": "propid-99" + }, + "___propertyDefinitionRef": "propid-99", + "value": { + "_value": "Unknown definition" + } + }, + { + "value": { + "_value": "No definition ref" + } + }, + { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4" + } + ] + }, + "_essential_data": true + }, + "type": "ApplicationComponent", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "documentation": "Handles cases", + "objectId": "uuid-el-1", + "_propertyMapping": { + "objectId": "Object ID", + "businessUnit": "Business Unit", + "referentieSoort": "Referentie soort", + "remark": "Remark" + }, + "_slug": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent", + "remark": null + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-2", + "slug": "el-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-el-2", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-el-2", + ":identifier": "id-el-2", + "xsi:type": "Capability" + }, + "name": { + "_value": "Zaakgericht werken" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4", + "value": { + "_value": "single" + } + } + }, + "_essential_data": true + }, + "type": "Capability", + "name": "Zaakgericht werken", + "remark": "single", + "_propertyMapping": { + "remark": "Remark" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-3", + "slug": "el-3", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-3", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-3", + ":identifier": "el-3", + "xsi:type": "BusinessActor" + }, + "name": [], + "documentation": [], + "_essential_data": true + }, + "type": "BusinessActor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-4", + "slug": "id-el-4", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-el-4", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-el-4", + ":identifier": "id-el-4", + "xsi:type": "DataObject" + }, + "name": { + "_value": "Zaakdossier" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-4" + } + } + }, + "_essential_data": true + }, + "type": "DataObject", + "name": "Zaakdossier", + "objectId": "uuid-el-4", + "_propertyMapping": { + "objectId": "Object ID" + }, + "_slug": "uuid-el-4" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-5", + "slug": "el-5", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-el-5", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-el-5", + ":identifier": "id-el-5", + "xsi:type": "Grouping" + }, + "name": { + "_value": "Standaard groep" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-5", + "_attributes": { + "propertyDefinitionRef": "propid-5", + ":propertyDefinitionRef": "propid-5" + }, + "___propertyDefinitionRef": "propid-5", + "value": { + "_value": "Gemma waarde" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Second unit" + } + } + ] + }, + "_essential_data": true + }, + "type": "Grouping", + "name": "Standaard groep", + "gemmaOnlineUrl": "Gemma waarde", + "_propertyMapping": { + "gemmaOnlineUrl": "Gemma Online URL", + "businessUnit": "Business Unit" + }, + "businessUnit": "Second unit" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "uuid-rel-1", + "slug": "id-rel-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-rel-1", + "section": "relationships", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-rel-1", + "source": "id-el-1", + "target": "id-el-2", + ":identifier": "id-rel-1", + ":source": "id-el-1", + ":target": "id-el-2", + "xsi:type": "Serving" + }, + "name": { + "_value": "serves" + }, + "documentation": { + "_value": "Serving relation" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-rel-1" + } + } + }, + "_essential_data": true + }, + "type": "Serving", + "name": "serves", + "omschrijving": "Serving relation", + "documentation": "Serving relation", + "objectId": "uuid-rel-1", + "_propertyMapping": { + "objectId": "Object ID" + }, + "_slug": "uuid-rel-1" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-2", + "slug": "rel-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-2", + "section": "relationships", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-2", + "source": "el-3", + "target": "id-el-4", + ":identifier": "rel-2", + ":source": "el-3", + ":target": "id-el-4", + "xsi:type": "Association" + }, + "_essential_data": true + }, + "type": "Association" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-model-golden", + "slug": "org-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "org-model-golden", + "section": "organization", + "model_identifier": "id-model-golden", + "name": "Organizations", + "xml": { + "item": [ + { + "label": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Business" + }, + "item": [ + { + "_identifierRef": "id-el-1", + "_attributes": { + "identifierRef": "id-el-1", + ":identifierRef": "id-el-1" + }, + "___identifierRef": "id-el-1" + }, + { + "label": { + "_value": "Nested" + }, + "item": { + "_identifierRef": "id-el-2", + "_attributes": { + "identifierRef": "id-el-2", + ":identifierRef": "id-el-2" + }, + "___identifierRef": "id-el-2" + } + } + ] + }, + { + "label": { + "_value": "Relations" + }, + "item": { + "_identifierRef": "id-rel-1", + "_attributes": { + "identifierRef": "id-rel-1", + ":identifierRef": "id-rel-1" + }, + "___identifierRef": "id-rel-1" + } + } + ] + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "id-view-1", + "slug": "view-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-view-1", + "section": "views", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-view-1", + "viewpoint": "Layered", + ":identifier": "id-view-1", + ":viewpoint": "Layered", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Overview" + }, + "documentation": { + "_value": "Main view" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "View unit" + } + } + }, + "node": [ + { + "_identifier": "id-node-1", + "_elementRef": "id-el-1", + "_x": "10", + "_y": "20", + "_w": "120", + "_h": "55", + "_attributes": { + "identifier": "id-node-1", + "elementRef": "id-el-1", + "x": "10", + "y": "20", + "w": "120", + "h": "55", + ":identifier": "id-node-1", + ":elementRef": "id-el-1", + ":x": "10", + ":y": "20", + ":w": "120", + ":h": "55", + "xsi:type": "Element" + }, + "___identifier": "id-node-1", + "___elementRef": "id-el-1", + "___x": "10", + "___y": "20", + "___w": "120", + "___h": "55", + "_xsi__type": "Element", + "style": { + "fillColor": { + "_r": "255", + "_g": "255", + "_b": "181", + "_a": "100", + "_attributes": { + "r": "255", + "g": "255", + "b": "181", + "a": "100", + ":r": "255", + ":g": "255", + ":b": "181", + ":a": "100" + }, + "___r": "255", + "___g": "255", + "___b": "181", + "___a": "100" + }, + "lineColor": { + "_r": "92", + "_g": "92", + "_b": "92", + "_attributes": { + "r": "92", + "g": "92", + "b": "92", + ":r": "92", + ":g": "92", + ":b": "92" + }, + "___r": "92", + "___g": "92", + "___b": "92" + }, + "font": { + "_name": "Segoe UI", + "_size": "9", + "_attributes": { + "name": "Segoe UI", + "size": "9", + ":name": "Segoe UI", + ":size": "9" + }, + "___name": "Segoe UI", + "___size": "9", + "color": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + } + }, + "node": { + "_identifier": "id-node-2", + "_elementRef": "id-el-2", + "_x": "20", + "_y": "30", + "_w": "60", + "_h": "40", + "_attributes": { + "identifier": "id-node-2", + "elementRef": "id-el-2", + "x": "20", + "y": "30", + "w": "60", + "h": "40", + ":identifier": "id-node-2", + ":elementRef": "id-el-2", + ":x": "20", + ":y": "30", + ":w": "60", + ":h": "40", + "xsi:type": "Element" + }, + "___identifier": "id-node-2", + "___elementRef": "id-el-2", + "___x": "20", + "___y": "30", + "___w": "60", + "___h": "40", + "_xsi__type": "Element" + } + }, + { + "_identifier": "id-node-3", + "_x": "200", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-3", + "x": "200", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-3", + ":x": "200", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Label" + }, + "___identifier": "id-node-3", + "___x": "200", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Label", + "label": { + "_value": "A note" + } + }, + { + "_identifier": "id-node-4", + "_elementRef": "id-el-missing", + "_x": "300", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-4", + "elementRef": "id-el-missing", + "x": "300", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-4", + ":elementRef": "id-el-missing", + ":x": "300", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Element" + }, + "___identifier": "id-node-4", + "___elementRef": "id-el-missing", + "___x": "300", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Element" + } + ], + "connection": { + "_identifier": "id-conn-1", + "_relationshipRef": "id-rel-1", + "_source": "id-node-1", + "_target": "id-node-2", + "_attributes": { + "identifier": "id-conn-1", + "relationshipRef": "id-rel-1", + "source": "id-node-1", + "target": "id-node-2", + ":identifier": "id-conn-1", + ":relationshipRef": "id-rel-1", + ":source": "id-node-1", + ":target": "id-node-2", + "xsi:type": "Relationship" + }, + "___identifier": "id-conn-1", + "___relationshipRef": "id-rel-1", + "___source": "id-node-1", + "___target": "id-node-2", + "_xsi__type": "Relationship", + "style": { + "lineColor": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + }, + "bendpoint": { + "_x": "50", + "_y": "60", + "_attributes": { + "x": "50", + "y": "60", + ":x": "50", + ":y": "60" + }, + "___x": "50", + "___y": "60" + } + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-1" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ], + "_essential_data": true + }, + "type": "Diagram", + "name": "Overview", + "omschrijving": "Main view", + "documentation": "Main view", + "businessUnit": "View unit", + "_propertyMapping": { + "businessUnit": "Business Unit" + } + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "slug": "view-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-2", + "section": "views", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Empty view" + }, + "_essential_data": true + }, + "type": "Diagram", + "name": "Empty view" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-1", + "slug": "propid-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-1", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-1", + "type": "string", + ":identifier": "propid-1", + ":type": "string" + }, + "name": { + "_value": "Object ID" + }, + "_essential_data": true + }, + "name": "Object ID" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-2", + "slug": "propid-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-2", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-2", + "type": "string", + ":identifier": "propid-2", + ":type": "string" + }, + "name": { + "_value": "Business Unit" + }, + "_essential_data": true + }, + "name": "Business Unit" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-3", + "slug": "propid-3", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-3", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-3", + "type": "string", + ":identifier": "propid-3", + ":type": "string" + }, + "name": { + "_value": "Referentie soort" + }, + "_essential_data": true + }, + "name": "Referentie soort" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-4", + "slug": "propid-4", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-4", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-4", + "type": "string", + ":identifier": "propid-4", + ":type": "string" + }, + "name": { + "_value": "Remark" + }, + "_essential_data": true + }, + "name": "Remark" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-5", + "slug": "propid-5", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-5", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-5", + "type": "string", + ":identifier": "propid-5", + ":type": "string" + }, + "name": { + "_value": "Gemma Online URL" + }, + "_essential_data": true + }, + "name": "Gemma Online URL" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ], + [ + "log.info", + "[ArchiMate] Using lastSaveResult for statistics", + { + "saved_count": 10, + "updated_count": 6, + "unchanged_count": 0, + "invalid_count": 0, + "keys_present": [ + "saved", + "updated", + "unchanged", + "invalid", + "countsBySchema" + ] + } + ], + [ + "log.info", + "[ArchiMate] Statistics summary calculated", + { + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 16, + "total_errors": 0 + }, + "section_counts": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 16, + "errors": 0 + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + } + } + } + ], + [ + "log.info", + "ArchiMate XML import completed successfully", + { + "model_identifier": "id-model-golden", + "model_exists": false, + "imported_objects": 0, + "round_trip_fidelity": "enabled" + } + ] + ] + }, + "optimized archimate_golden.xml {\"operationId\":\"archimate_import_golden01\"}": { + "result": { + "success": true, + "file_info": { + "name": "archimate_golden.xml", + "size": 5163 + }, + "performance_metrics": { + "total_time_seconds": "", + "items_per_second": "", + "objects_processed": 16, + "timing_breakdown": { + "cache_initialization_seconds": "", + "xml_parsing_seconds": "", + "memory_cleanup_seconds": "", + "model_identifier_extraction_seconds": "", + "data_transformation_seconds": "", + "database_save_seconds": "" + }, + "save_operation_breakdown": { + "total_save_seconds": "", + "service_init_seconds": "", + "gemma_processing_seconds": "", + "batch_processing_seconds": "", + "objects_saved": 16, + "save_rate_objects_per_second": "" + }, + "memory_usage": "", + "processing_rates": { + "xml_parse_objects_per_second": "", + "transform_objects_per_second": "", + "save_objects_per_second": "" + } + }, + "statistics": { + "elements": { + "created": 4, + "updated": 2, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 1, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 1, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 4, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 10, + "total_objects_updated": 6, + "total_objects_deleted": 0, + "total_objects_unchanged": 0, + "total_errors": 0 + } + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../data/archimate_golden.xml", + "fileName": "archimate_golden.xml", + "operationId": "archimate_import_golden01" + } + ], + [ + "progress.startOperation", + "archimate_import", + "archimate_import_golden01" + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "progress.setPhase", + [ + "validating", + [] + ] + ], + [ + "progress.setPhase", + [ + "parsing", + [] + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden01", + 1 + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "documentation", + "properties", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-model-golden" + } + ], + [ + "progress.setPhase", + [ + "analyzing", + [] + ] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "id-model-golden" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 5, + "relationships_count": 2, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-1", + "properties_count": 6, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-1", + "property_name": "Referentie soort", + "camel_case_name": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + [ + "log.warning", + "Property definition not found in map", + { + "object_id": "id-el-1", + "property_def_ref": "propid-99", + "available_refs": [ + "propid-1", + "propid-2", + "propid-3", + "propid-4", + "propid-5" + ] + } + ], + [ + "log.warning", + "Property missing propertyDefinitionRef", + { + "object_id": "id-el-1", + "property_index": 4, + "property_structure": [ + "value" + ] + } + ], + [ + "log.warning", + "Property value is null", + { + "object_id": "id-el-1", + "property_def_ref": "propid-4", + "value": null + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-1", + "processed_count": 3, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-1", + "def_ref": "propid-1" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Backoffice", + "def_ref": "propid-2" + }, + { + "original": "Referentie soort", + "camelCase": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "objectId", + "_propertyMapping", + "businessUnit", + "referentieSoort" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-2", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-2", + "processed_count": 1, + "processed_properties": [ + { + "original": "Remark", + "camelCase": "remark", + "value": "single", + "def_ref": "propid-4" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "remark", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-4", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-4", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-4", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-5", + "properties_count": 2, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-5", + "property_name": "Gemma Online URL", + "camel_case_name": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-5", + "processed_count": 2, + "processed_properties": [ + { + "original": "Gemma Online URL", + "camelCase": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Second unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "gemmaOnlineUrl", + "_propertyMapping", + "businessUnit" + ] + } + ], + [ + "log.debug", + "SPEED: Bulk processing relationships", + { + "item_count": 2 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-rel-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-rel-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-rel-1", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "source", + "target", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing property_definitions", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 5, + "sample_identifiers": [ + "id-el-1", + "id-el-2", + "el-3", + "id-el-4", + "id-el-5" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 5 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 5, + "referenced_elements": 2, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-view-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-view-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "View unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "businessUnit", + "_propertyMapping" + ] + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Memory cleanup before database operations", + { + "memory_freed_mb": "", + "gc_cycles_collected": "", + "memory_before_mb": "", + "memory_after_mb": "" + } + ], + [ + "progress.isCancelRequested", + "archimate_import_golden01", + 2 + ], + [ + "log.info", + "GEMMA IMPORT DEBUG: About to save objects to database", + { + "object_count": 16 + } + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 16, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.debug", + "GEMMA Type property found", + { + "property_name": "type", + "value": "ApplicationComponent", + "object_id": "id-el-1" + } + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 5, + "elements_with_gemma_type": 5, + "gemma_type_variations": { + "ApplicationComponent": 1, + "Capability": 1, + "BusinessActor": 1, + "DataObject": 1, + "Grouping": 1 + }, + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 5, + "12": 2, + "14": 1, + "15": 5, + "13": 2 + } + } + ], + [ + "progress.setPhase", + [ + "processing_elements", + { + "total_items": 16, + "reset_progress": true + } + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden01", + 3 + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-model-golden", + "section": "model", + "model_identifier": "id-model-golden", + "xml": { + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Golden model" + }, + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + }, + "name": "Golden model", + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + }, + ":identifier": "id-model-golden" + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "progress.updateProgress", + [ + 1, + null, + "10" + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden01", + 4 + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-el-1" + }, + "identifier": "id-el-1", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-1", + ":identifier": "id-el-1", + "xsi:type": "ApplicationComponent" + }, + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Zaaksysteem" + }, + "documentation": { + "_value": "Handles cases" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-1" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Backoffice" + } + }, + { + "_propertyDefinitionRef": "propid-3", + "_attributes": { + "propertyDefinitionRef": "propid-3", + ":propertyDefinitionRef": "propid-3" + }, + "___propertyDefinitionRef": "propid-3", + "value": { + "_value": "Referentiecomponent" + } + }, + { + "_propertyDefinitionRef": "propid-99", + "_attributes": { + "propertyDefinitionRef": "propid-99", + ":propertyDefinitionRef": "propid-99" + }, + "___propertyDefinitionRef": "propid-99", + "value": { + "_value": "Unknown definition" + } + }, + { + "value": { + "_value": "No definition ref" + } + }, + { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4" + } + ] + }, + "_essential_data": true + }, + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "_propertyMapping": { + "objectId": "Object ID", + "businessUnit": "Business Unit", + "referentieSoort": "Referentie soort" + }, + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-2" + }, + "identifier": "id-el-2", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-2", + ":identifier": "id-el-2", + "xsi:type": "Capability" + }, + "name": { + "_value": "Zaakgericht werken" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4", + "value": { + "_value": "single" + } + } + }, + "_essential_data": true + }, + "name": "Zaakgericht werken", + "type": "Capability", + "remark": "single", + "_propertyMapping": { + "remark": "Remark" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-3" + }, + "identifier": "el-3", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "el-3", + ":identifier": "el-3", + "xsi:type": "BusinessActor" + }, + "name": [], + "documentation": [], + "_essential_data": true + }, + "name": "", + "omschrijving": "", + "type": "BusinessActor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-el-4" + }, + "identifier": "id-el-4", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-4", + ":identifier": "id-el-4", + "xsi:type": "DataObject" + }, + "name": { + "_value": "Zaakdossier" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-4" + } + } + }, + "_essential_data": true + }, + "name": "Zaakdossier", + "type": "DataObject", + "objectId": "uuid-el-4", + "_propertyMapping": { + "objectId": "Object ID" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-5" + }, + "identifier": "id-el-5", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-5", + ":identifier": "id-el-5", + "xsi:type": "Grouping" + }, + "name": { + "_value": "Standaard groep" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-5", + "_attributes": { + "propertyDefinitionRef": "propid-5", + ":propertyDefinitionRef": "propid-5" + }, + "___propertyDefinitionRef": "propid-5", + "value": { + "_value": "Gemma waarde" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Second unit" + } + } + ] + }, + "_essential_data": true + }, + "name": "Standaard groep", + "type": "Grouping", + "gemmaOnlineUrl": "Gemma waarde", + "_propertyMapping": { + "gemmaOnlineUrl": "Gemma Online URL", + "businessUnit": "Business Unit" + }, + "businessUnit": "Second unit" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "progress.updateProgress", + [ + 6, + null, + "11" + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden01", + 5 + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "uuid-rel-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-rel-1" + }, + "identifier": "id-rel-1", + "section": "relationship", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-rel-1", + "source": "id-el-1", + "target": "id-el-2", + ":identifier": "id-rel-1", + ":source": "id-el-1", + ":target": "id-el-2", + "xsi:type": "Serving" + }, + "name": { + "_value": "serves" + }, + "documentation": { + "_value": "Serving relation" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-rel-1" + } + } + }, + "_essential_data": true + }, + "name": "serves", + "omschrijving": "Serving relation", + "type": "Serving", + "source": "id-el-1", + "target": "id-el-2", + "objectId": "uuid-rel-1", + "_propertyMapping": { + "objectId": "Object ID" + } + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-2" + }, + "identifier": "rel-2", + "section": "relationship", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "rel-2", + "source": "el-3", + "target": "id-el-4", + ":identifier": "rel-2", + ":source": "el-3", + ":target": "id-el-4", + "xsi:type": "Association" + }, + "_essential_data": true + }, + "type": "Association", + "source": "el-3", + "target": "id-el-4" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "progress.updateProgress", + [ + 8, + null, + "12" + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden01", + 6 + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "org-model-golden", + "section": "organization", + "model_identifier": "id-model-golden", + "name": "Organizations", + "xml": { + "item": [ + { + "label": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Business" + }, + "item": [ + { + "_identifierRef": "id-el-1", + "_attributes": { + "identifierRef": "id-el-1", + ":identifierRef": "id-el-1" + }, + "___identifierRef": "id-el-1" + }, + { + "label": { + "_value": "Nested" + }, + "item": { + "_identifierRef": "id-el-2", + "_attributes": { + "identifierRef": "id-el-2", + ":identifierRef": "id-el-2" + }, + "___identifierRef": "id-el-2" + } + } + ] + }, + { + "label": { + "_value": "Relations" + }, + "item": { + "_identifierRef": "id-rel-1", + "_attributes": { + "identifierRef": "id-rel-1", + ":identifierRef": "id-rel-1" + }, + "___identifierRef": "id-rel-1" + } + } + ] + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "progress.updateProgress", + [ + 9, + null, + "14" + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden01", + 7 + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-1" + }, + "identifier": "propid-1", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-1", + "type": "string", + ":identifier": "propid-1", + ":type": "string" + }, + "name": { + "_value": "Object ID" + }, + "_essential_data": true + }, + "name": "Object ID" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-2" + }, + "identifier": "propid-2", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-2", + "type": "string", + ":identifier": "propid-2", + ":type": "string" + }, + "name": { + "_value": "Business Unit" + }, + "_essential_data": true + }, + "name": "Business Unit" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-3" + }, + "identifier": "propid-3", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-3", + "type": "string", + ":identifier": "propid-3", + ":type": "string" + }, + "name": { + "_value": "Referentie soort" + }, + "_essential_data": true + }, + "name": "Referentie soort" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-4" + }, + "identifier": "propid-4", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-4", + "type": "string", + ":identifier": "propid-4", + ":type": "string" + }, + "name": { + "_value": "Remark" + }, + "_essential_data": true + }, + "name": "Remark" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-5" + }, + "identifier": "propid-5", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-5", + "type": "string", + ":identifier": "propid-5", + ":type": "string" + }, + "name": { + "_value": "Gemma Online URL" + }, + "_essential_data": true + }, + "name": "Gemma Online URL" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "progress.updateProgress", + [ + 14, + null, + "15" + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden01", + 8 + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "id-view-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-view-1" + }, + "identifier": "id-view-1", + "section": "view", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-view-1", + "viewpoint": "Layered", + ":identifier": "id-view-1", + ":viewpoint": "Layered", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Overview" + }, + "documentation": { + "_value": "Main view" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "View unit" + } + } + }, + "node": [ + { + "_identifier": "id-node-1", + "_elementRef": "id-el-1", + "_x": "10", + "_y": "20", + "_w": "120", + "_h": "55", + "_attributes": { + "identifier": "id-node-1", + "elementRef": "id-el-1", + "x": "10", + "y": "20", + "w": "120", + "h": "55", + ":identifier": "id-node-1", + ":elementRef": "id-el-1", + ":x": "10", + ":y": "20", + ":w": "120", + ":h": "55", + "xsi:type": "Element" + }, + "___identifier": "id-node-1", + "___elementRef": "id-el-1", + "___x": "10", + "___y": "20", + "___w": "120", + "___h": "55", + "_xsi__type": "Element", + "style": { + "fillColor": { + "_r": "255", + "_g": "255", + "_b": "181", + "_a": "100", + "_attributes": { + "r": "255", + "g": "255", + "b": "181", + "a": "100", + ":r": "255", + ":g": "255", + ":b": "181", + ":a": "100" + }, + "___r": "255", + "___g": "255", + "___b": "181", + "___a": "100" + }, + "lineColor": { + "_r": "92", + "_g": "92", + "_b": "92", + "_attributes": { + "r": "92", + "g": "92", + "b": "92", + ":r": "92", + ":g": "92", + ":b": "92" + }, + "___r": "92", + "___g": "92", + "___b": "92" + }, + "font": { + "_name": "Segoe UI", + "_size": "9", + "_attributes": { + "name": "Segoe UI", + "size": "9", + ":name": "Segoe UI", + ":size": "9" + }, + "___name": "Segoe UI", + "___size": "9", + "color": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + } + }, + "node": { + "_identifier": "id-node-2", + "_elementRef": "id-el-2", + "_x": "20", + "_y": "30", + "_w": "60", + "_h": "40", + "_attributes": { + "identifier": "id-node-2", + "elementRef": "id-el-2", + "x": "20", + "y": "30", + "w": "60", + "h": "40", + ":identifier": "id-node-2", + ":elementRef": "id-el-2", + ":x": "20", + ":y": "30", + ":w": "60", + ":h": "40", + "xsi:type": "Element" + }, + "___identifier": "id-node-2", + "___elementRef": "id-el-2", + "___x": "20", + "___y": "30", + "___w": "60", + "___h": "40", + "_xsi__type": "Element" + } + }, + { + "_identifier": "id-node-3", + "_x": "200", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-3", + "x": "200", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-3", + ":x": "200", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Label" + }, + "___identifier": "id-node-3", + "___x": "200", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Label", + "label": { + "_value": "A note" + } + }, + { + "_identifier": "id-node-4", + "_elementRef": "id-el-missing", + "_x": "300", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-4", + "elementRef": "id-el-missing", + "x": "300", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-4", + ":elementRef": "id-el-missing", + ":x": "300", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Element" + }, + "___identifier": "id-node-4", + "___elementRef": "id-el-missing", + "___x": "300", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Element" + } + ], + "connection": { + "_identifier": "id-conn-1", + "_relationshipRef": "id-rel-1", + "_source": "id-node-1", + "_target": "id-node-2", + "_attributes": { + "identifier": "id-conn-1", + "relationshipRef": "id-rel-1", + "source": "id-node-1", + "target": "id-node-2", + ":identifier": "id-conn-1", + ":relationshipRef": "id-rel-1", + ":source": "id-node-1", + ":target": "id-node-2", + "xsi:type": "Relationship" + }, + "___identifier": "id-conn-1", + "___relationshipRef": "id-rel-1", + "___source": "id-node-1", + "___target": "id-node-2", + "_xsi__type": "Relationship", + "style": { + "lineColor": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + }, + "bendpoint": { + "_x": "50", + "_y": "60", + "_attributes": { + "x": "50", + "y": "60", + ":x": "50", + ":y": "60" + }, + "___x": "50", + "___y": "60" + } + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": "Zaaksysteem", + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": "Handles cases", + "elementRef": "id-el-1", + "elementProperties": { + "identifier": "id-el-1", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "section": "element", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + "objectId": "uuid-el-1", + "elementSection": "element" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": "Zaakgericht werken", + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2", + "elementProperties": { + "identifier": "id-el-2", + "name": "Zaakgericht werken", + "section": "element", + "type": "Capability", + "remark": "single" + }, + "elementSection": "element" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ], + "_essential_data": true + }, + "name": "Overview", + "omschrijving": "Main view", + "type": "Diagram", + "businessUnit": "View unit", + "_propertyMapping": { + "businessUnit": "Business Unit" + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": "Zaaksysteem", + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": "Handles cases", + "elementRef": "id-el-1", + "elementProperties": { + "identifier": "id-el-1", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "section": "element", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + "objectId": "uuid-el-1", + "elementSection": "element" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": "Zaakgericht werken", + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2", + "elementProperties": { + "identifier": "id-el-2", + "name": "Zaakgericht werken", + "section": "element", + "type": "Capability", + "remark": "single" + }, + "elementSection": "element" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ] + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-2" + }, + "identifier": "view-2", + "section": "view", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Empty view" + }, + "_essential_data": true + }, + "name": "Empty view", + "type": "Diagram" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "progress.updateProgress", + [ + 16, + null, + "13" + ] + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ], + [ + "progress.setPhase", + [ + "finalizing", + [] + ] + ], + [ + "progress.completeOperation", + [ + [] + ] + ] + ] + }, + "optimized archimate_golden.xml {\"operationId\":\"archimate_import_golden02\",\"cancelOnCall\":4}": { + "result": { + "success": false, + "cancelled": true, + "message": "Import cancelled", + "counts": { + "saved": 0, + "updated": 1, + "unchanged": 0, + "invalid": 0 + }, + "objects_saved": 1 + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../data/archimate_golden.xml", + "fileName": "archimate_golden.xml", + "operationId": "archimate_import_golden02" + } + ], + [ + "progress.startOperation", + "archimate_import", + "archimate_import_golden02" + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "progress.setPhase", + [ + "validating", + [] + ] + ], + [ + "progress.setPhase", + [ + "parsing", + [] + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden02", + 1 + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "documentation", + "properties", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-model-golden" + } + ], + [ + "progress.setPhase", + [ + "analyzing", + [] + ] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "id-model-golden" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 5, + "relationships_count": 2, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-1", + "properties_count": 6, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-1", + "property_name": "Referentie soort", + "camel_case_name": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + [ + "log.warning", + "Property definition not found in map", + { + "object_id": "id-el-1", + "property_def_ref": "propid-99", + "available_refs": [ + "propid-1", + "propid-2", + "propid-3", + "propid-4", + "propid-5" + ] + } + ], + [ + "log.warning", + "Property missing propertyDefinitionRef", + { + "object_id": "id-el-1", + "property_index": 4, + "property_structure": [ + "value" + ] + } + ], + [ + "log.warning", + "Property value is null", + { + "object_id": "id-el-1", + "property_def_ref": "propid-4", + "value": null + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-1", + "processed_count": 3, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-1", + "def_ref": "propid-1" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Backoffice", + "def_ref": "propid-2" + }, + { + "original": "Referentie soort", + "camelCase": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "objectId", + "_propertyMapping", + "businessUnit", + "referentieSoort" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-2", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-2", + "processed_count": 1, + "processed_properties": [ + { + "original": "Remark", + "camelCase": "remark", + "value": "single", + "def_ref": "propid-4" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "remark", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-4", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-4", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-4", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-5", + "properties_count": 2, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-5", + "property_name": "Gemma Online URL", + "camel_case_name": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-5", + "processed_count": 2, + "processed_properties": [ + { + "original": "Gemma Online URL", + "camelCase": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Second unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "gemmaOnlineUrl", + "_propertyMapping", + "businessUnit" + ] + } + ], + [ + "log.debug", + "SPEED: Bulk processing relationships", + { + "item_count": 2 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-rel-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-rel-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-rel-1", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "source", + "target", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing property_definitions", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 5, + "sample_identifiers": [ + "id-el-1", + "id-el-2", + "el-3", + "id-el-4", + "id-el-5" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 5 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 5, + "referenced_elements": 2, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-view-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-view-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "View unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "businessUnit", + "_propertyMapping" + ] + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Memory cleanup before database operations", + { + "memory_freed_mb": "", + "gc_cycles_collected": "", + "memory_before_mb": "", + "memory_after_mb": "" + } + ], + [ + "progress.isCancelRequested", + "archimate_import_golden02", + 2 + ], + [ + "log.info", + "GEMMA IMPORT DEBUG: About to save objects to database", + { + "object_count": 16 + } + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 16, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.debug", + "GEMMA Type property found", + { + "property_name": "type", + "value": "ApplicationComponent", + "object_id": "id-el-1" + } + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 5, + "elements_with_gemma_type": 5, + "gemma_type_variations": { + "ApplicationComponent": 1, + "Capability": 1, + "BusinessActor": 1, + "DataObject": 1, + "Grouping": 1 + }, + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 5, + "12": 2, + "14": 1, + "15": 5, + "13": 2 + } + } + ], + [ + "progress.setPhase", + [ + "processing_elements", + { + "total_items": 16, + "reset_progress": true + } + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden02", + 3 + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-model-golden", + "section": "model", + "model_identifier": "id-model-golden", + "xml": { + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Golden model" + }, + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + }, + "name": "Golden model", + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + }, + ":identifier": "id-model-golden" + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "progress.updateProgress", + [ + 1, + null, + "10" + ] + ], + [ + "progress.isCancelRequested", + "archimate_import_golden02", + 4 + ], + [ + "progress.cancelOperation", + [] + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ] + ] + }, + "optimized archimate_golden.xml {\"failSchema\":12}": { + "result": { + "success": true, + "file_info": { + "name": "archimate_golden.xml", + "size": 5163 + }, + "performance_metrics": { + "total_time_seconds": "", + "items_per_second": "", + "objects_processed": 16, + "timing_breakdown": { + "cache_initialization_seconds": "", + "xml_parsing_seconds": "", + "memory_cleanup_seconds": "", + "model_identifier_extraction_seconds": "", + "data_transformation_seconds": "", + "database_save_seconds": "" + }, + "save_operation_breakdown": { + "total_save_seconds": "", + "service_init_seconds": "", + "gemma_processing_seconds": "", + "batch_processing_seconds": "", + "objects_saved": 14, + "save_rate_objects_per_second": "" + }, + "memory_usage": "", + "processing_rates": { + "xml_parse_objects_per_second": "", + "transform_objects_per_second": "", + "save_objects_per_second": "" + } + }, + "statistics": { + "elements": { + "created": 4, + "updated": 2, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 1, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 4, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 9, + "total_objects_updated": 5, + "total_objects_deleted": 0, + "total_objects_unchanged": 0, + "total_errors": 0 + } + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../data/archimate_golden.xml", + "fileName": "archimate_golden.xml" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "documentation", + "properties", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-model-golden" + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "id-model-golden" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 5, + "relationships_count": 2, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-1", + "properties_count": 6, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-1", + "property_name": "Referentie soort", + "camel_case_name": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + [ + "log.warning", + "Property definition not found in map", + { + "object_id": "id-el-1", + "property_def_ref": "propid-99", + "available_refs": [ + "propid-1", + "propid-2", + "propid-3", + "propid-4", + "propid-5" + ] + } + ], + [ + "log.warning", + "Property missing propertyDefinitionRef", + { + "object_id": "id-el-1", + "property_index": 4, + "property_structure": [ + "value" + ] + } + ], + [ + "log.warning", + "Property value is null", + { + "object_id": "id-el-1", + "property_def_ref": "propid-4", + "value": null + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-1", + "processed_count": 3, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-1", + "def_ref": "propid-1" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Backoffice", + "def_ref": "propid-2" + }, + { + "original": "Referentie soort", + "camelCase": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "objectId", + "_propertyMapping", + "businessUnit", + "referentieSoort" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-2", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-2", + "processed_count": 1, + "processed_properties": [ + { + "original": "Remark", + "camelCase": "remark", + "value": "single", + "def_ref": "propid-4" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "remark", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-4", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-4", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-4", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-5", + "properties_count": 2, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-5", + "property_name": "Gemma Online URL", + "camel_case_name": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-5", + "processed_count": 2, + "processed_properties": [ + { + "original": "Gemma Online URL", + "camelCase": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Second unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "gemmaOnlineUrl", + "_propertyMapping", + "businessUnit" + ] + } + ], + [ + "log.debug", + "SPEED: Bulk processing relationships", + { + "item_count": 2 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-rel-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-rel-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-rel-1", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "source", + "target", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing property_definitions", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 5, + "sample_identifiers": [ + "id-el-1", + "id-el-2", + "el-3", + "id-el-4", + "id-el-5" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 5 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 5, + "referenced_elements": 2, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-view-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-view-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "View unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "businessUnit", + "_propertyMapping" + ] + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Memory cleanup before database operations", + { + "memory_freed_mb": "", + "gc_cycles_collected": "", + "memory_before_mb": "", + "memory_after_mb": "" + } + ], + [ + "log.info", + "GEMMA IMPORT DEBUG: About to save objects to database", + { + "object_count": 16 + } + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 16, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.debug", + "GEMMA Type property found", + { + "property_name": "type", + "value": "ApplicationComponent", + "object_id": "id-el-1" + } + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 5, + "elements_with_gemma_type": 5, + "gemma_type_variations": { + "ApplicationComponent": 1, + "Capability": 1, + "BusinessActor": 1, + "DataObject": 1, + "Grouping": 1 + }, + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 5, + "12": 2, + "14": 1, + "15": 5, + "13": 2 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-model-golden", + "section": "model", + "model_identifier": "id-model-golden", + "xml": { + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Golden model" + }, + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + }, + "name": "Golden model", + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + }, + ":identifier": "id-model-golden" + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-el-1" + }, + "identifier": "id-el-1", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-1", + ":identifier": "id-el-1", + "xsi:type": "ApplicationComponent" + }, + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Zaaksysteem" + }, + "documentation": { + "_value": "Handles cases" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-1" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Backoffice" + } + }, + { + "_propertyDefinitionRef": "propid-3", + "_attributes": { + "propertyDefinitionRef": "propid-3", + ":propertyDefinitionRef": "propid-3" + }, + "___propertyDefinitionRef": "propid-3", + "value": { + "_value": "Referentiecomponent" + } + }, + { + "_propertyDefinitionRef": "propid-99", + "_attributes": { + "propertyDefinitionRef": "propid-99", + ":propertyDefinitionRef": "propid-99" + }, + "___propertyDefinitionRef": "propid-99", + "value": { + "_value": "Unknown definition" + } + }, + { + "value": { + "_value": "No definition ref" + } + }, + { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4" + } + ] + }, + "_essential_data": true + }, + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "_propertyMapping": { + "objectId": "Object ID", + "businessUnit": "Business Unit", + "referentieSoort": "Referentie soort" + }, + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-2" + }, + "identifier": "id-el-2", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-2", + ":identifier": "id-el-2", + "xsi:type": "Capability" + }, + "name": { + "_value": "Zaakgericht werken" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4", + "value": { + "_value": "single" + } + } + }, + "_essential_data": true + }, + "name": "Zaakgericht werken", + "type": "Capability", + "remark": "single", + "_propertyMapping": { + "remark": "Remark" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-3" + }, + "identifier": "el-3", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "el-3", + ":identifier": "el-3", + "xsi:type": "BusinessActor" + }, + "name": [], + "documentation": [], + "_essential_data": true + }, + "name": "", + "omschrijving": "", + "type": "BusinessActor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-el-4" + }, + "identifier": "id-el-4", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-4", + ":identifier": "id-el-4", + "xsi:type": "DataObject" + }, + "name": { + "_value": "Zaakdossier" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-4" + } + } + }, + "_essential_data": true + }, + "name": "Zaakdossier", + "type": "DataObject", + "objectId": "uuid-el-4", + "_propertyMapping": { + "objectId": "Object ID" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-5" + }, + "identifier": "id-el-5", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-5", + ":identifier": "id-el-5", + "xsi:type": "Grouping" + }, + "name": { + "_value": "Standaard groep" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-5", + "_attributes": { + "propertyDefinitionRef": "propid-5", + ":propertyDefinitionRef": "propid-5" + }, + "___propertyDefinitionRef": "propid-5", + "value": { + "_value": "Gemma waarde" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Second unit" + } + } + ] + }, + "_essential_data": true + }, + "name": "Standaard groep", + "type": "Grouping", + "gemmaOnlineUrl": "Gemma waarde", + "_propertyMapping": { + "gemmaOnlineUrl": "Gemma Online URL", + "businessUnit": "Business Unit" + }, + "businessUnit": "Second unit" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "uuid-rel-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-rel-1" + }, + "identifier": "id-rel-1", + "section": "relationship", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-rel-1", + "source": "id-el-1", + "target": "id-el-2", + ":identifier": "id-rel-1", + ":source": "id-el-1", + ":target": "id-el-2", + "xsi:type": "Serving" + }, + "name": { + "_value": "serves" + }, + "documentation": { + "_value": "Serving relation" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-rel-1" + } + } + }, + "_essential_data": true + }, + "name": "serves", + "omschrijving": "Serving relation", + "type": "Serving", + "source": "id-el-1", + "target": "id-el-2", + "objectId": "uuid-rel-1", + "_propertyMapping": { + "objectId": "Object ID" + } + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-2" + }, + "identifier": "rel-2", + "section": "relationship", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "rel-2", + "source": "el-3", + "target": "id-el-4", + ":identifier": "rel-2", + ":source": "el-3", + ":target": "id-el-4", + "xsi:type": "Association" + }, + "_essential_data": true + }, + "type": "Association", + "source": "el-3", + "target": "id-el-4" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.error", + "Error saving schema group", + { + "schemaId": 12, + "error": "save failed for schema 12", + "objectCount": 2 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "org-model-golden", + "section": "organization", + "model_identifier": "id-model-golden", + "name": "Organizations", + "xml": { + "item": [ + { + "label": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Business" + }, + "item": [ + { + "_identifierRef": "id-el-1", + "_attributes": { + "identifierRef": "id-el-1", + ":identifierRef": "id-el-1" + }, + "___identifierRef": "id-el-1" + }, + { + "label": { + "_value": "Nested" + }, + "item": { + "_identifierRef": "id-el-2", + "_attributes": { + "identifierRef": "id-el-2", + ":identifierRef": "id-el-2" + }, + "___identifierRef": "id-el-2" + } + } + ] + }, + { + "label": { + "_value": "Relations" + }, + "item": { + "_identifierRef": "id-rel-1", + "_attributes": { + "identifierRef": "id-rel-1", + ":identifierRef": "id-rel-1" + }, + "___identifierRef": "id-rel-1" + } + } + ] + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-1" + }, + "identifier": "propid-1", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-1", + "type": "string", + ":identifier": "propid-1", + ":type": "string" + }, + "name": { + "_value": "Object ID" + }, + "_essential_data": true + }, + "name": "Object ID" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-2" + }, + "identifier": "propid-2", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-2", + "type": "string", + ":identifier": "propid-2", + ":type": "string" + }, + "name": { + "_value": "Business Unit" + }, + "_essential_data": true + }, + "name": "Business Unit" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-3" + }, + "identifier": "propid-3", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-3", + "type": "string", + ":identifier": "propid-3", + ":type": "string" + }, + "name": { + "_value": "Referentie soort" + }, + "_essential_data": true + }, + "name": "Referentie soort" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-4" + }, + "identifier": "propid-4", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-4", + "type": "string", + ":identifier": "propid-4", + ":type": "string" + }, + "name": { + "_value": "Remark" + }, + "_essential_data": true + }, + "name": "Remark" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "propid-5" + }, + "identifier": "propid-5", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-5", + "type": "string", + ":identifier": "propid-5", + ":type": "string" + }, + "name": { + "_value": "Gemma Online URL" + }, + "_essential_data": true + }, + "name": "Gemma Online URL" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "id-view-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "id-view-1" + }, + "identifier": "id-view-1", + "section": "view", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-view-1", + "viewpoint": "Layered", + ":identifier": "id-view-1", + ":viewpoint": "Layered", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Overview" + }, + "documentation": { + "_value": "Main view" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "View unit" + } + } + }, + "node": [ + { + "_identifier": "id-node-1", + "_elementRef": "id-el-1", + "_x": "10", + "_y": "20", + "_w": "120", + "_h": "55", + "_attributes": { + "identifier": "id-node-1", + "elementRef": "id-el-1", + "x": "10", + "y": "20", + "w": "120", + "h": "55", + ":identifier": "id-node-1", + ":elementRef": "id-el-1", + ":x": "10", + ":y": "20", + ":w": "120", + ":h": "55", + "xsi:type": "Element" + }, + "___identifier": "id-node-1", + "___elementRef": "id-el-1", + "___x": "10", + "___y": "20", + "___w": "120", + "___h": "55", + "_xsi__type": "Element", + "style": { + "fillColor": { + "_r": "255", + "_g": "255", + "_b": "181", + "_a": "100", + "_attributes": { + "r": "255", + "g": "255", + "b": "181", + "a": "100", + ":r": "255", + ":g": "255", + ":b": "181", + ":a": "100" + }, + "___r": "255", + "___g": "255", + "___b": "181", + "___a": "100" + }, + "lineColor": { + "_r": "92", + "_g": "92", + "_b": "92", + "_attributes": { + "r": "92", + "g": "92", + "b": "92", + ":r": "92", + ":g": "92", + ":b": "92" + }, + "___r": "92", + "___g": "92", + "___b": "92" + }, + "font": { + "_name": "Segoe UI", + "_size": "9", + "_attributes": { + "name": "Segoe UI", + "size": "9", + ":name": "Segoe UI", + ":size": "9" + }, + "___name": "Segoe UI", + "___size": "9", + "color": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + } + }, + "node": { + "_identifier": "id-node-2", + "_elementRef": "id-el-2", + "_x": "20", + "_y": "30", + "_w": "60", + "_h": "40", + "_attributes": { + "identifier": "id-node-2", + "elementRef": "id-el-2", + "x": "20", + "y": "30", + "w": "60", + "h": "40", + ":identifier": "id-node-2", + ":elementRef": "id-el-2", + ":x": "20", + ":y": "30", + ":w": "60", + ":h": "40", + "xsi:type": "Element" + }, + "___identifier": "id-node-2", + "___elementRef": "id-el-2", + "___x": "20", + "___y": "30", + "___w": "60", + "___h": "40", + "_xsi__type": "Element" + } + }, + { + "_identifier": "id-node-3", + "_x": "200", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-3", + "x": "200", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-3", + ":x": "200", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Label" + }, + "___identifier": "id-node-3", + "___x": "200", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Label", + "label": { + "_value": "A note" + } + }, + { + "_identifier": "id-node-4", + "_elementRef": "id-el-missing", + "_x": "300", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-4", + "elementRef": "id-el-missing", + "x": "300", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-4", + ":elementRef": "id-el-missing", + ":x": "300", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Element" + }, + "___identifier": "id-node-4", + "___elementRef": "id-el-missing", + "___x": "300", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Element" + } + ], + "connection": { + "_identifier": "id-conn-1", + "_relationshipRef": "id-rel-1", + "_source": "id-node-1", + "_target": "id-node-2", + "_attributes": { + "identifier": "id-conn-1", + "relationshipRef": "id-rel-1", + "source": "id-node-1", + "target": "id-node-2", + ":identifier": "id-conn-1", + ":relationshipRef": "id-rel-1", + ":source": "id-node-1", + ":target": "id-node-2", + "xsi:type": "Relationship" + }, + "___identifier": "id-conn-1", + "___relationshipRef": "id-rel-1", + "___source": "id-node-1", + "___target": "id-node-2", + "_xsi__type": "Relationship", + "style": { + "lineColor": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + }, + "bendpoint": { + "_x": "50", + "_y": "60", + "_attributes": { + "x": "50", + "y": "60", + ":x": "50", + ":y": "60" + }, + "___x": "50", + "___y": "60" + } + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": "Zaaksysteem", + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": "Handles cases", + "elementRef": "id-el-1", + "elementProperties": { + "identifier": "id-el-1", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "section": "element", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + "objectId": "uuid-el-1", + "elementSection": "element" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": "Zaakgericht werken", + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2", + "elementProperties": { + "identifier": "id-el-2", + "name": "Zaakgericht werken", + "section": "element", + "type": "Capability", + "remark": "single" + }, + "elementSection": "element" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ], + "_essential_data": true + }, + "name": "Overview", + "omschrijving": "Main view", + "type": "Diagram", + "businessUnit": "View unit", + "_propertyMapping": { + "businessUnit": "Business Unit" + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": "Zaaksysteem", + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": "Handles cases", + "elementRef": "id-el-1", + "elementProperties": { + "identifier": "id-el-1", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "section": "element", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + "objectId": "uuid-el-1", + "elementSection": "element" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": "Zaakgericht werken", + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2", + "elementProperties": { + "identifier": "id-el-2", + "name": "Zaakgericht werken", + "section": "element", + "type": "Capability", + "remark": "single" + }, + "elementSection": "element" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ] + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-2" + }, + "identifier": "view-2", + "section": "view", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Empty view" + }, + "_essential_data": true + }, + "name": "Empty view", + "type": "Diagram" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ] + ] + }, + "optimized archimate_golden.xml {\"noOrganisation\":true}": { + "result": { + "success": true, + "file_info": { + "name": "archimate_golden.xml", + "size": 5163 + }, + "performance_metrics": { + "total_time_seconds": "", + "items_per_second": "", + "objects_processed": 16, + "timing_breakdown": { + "cache_initialization_seconds": "", + "xml_parsing_seconds": "", + "memory_cleanup_seconds": "", + "model_identifier_extraction_seconds": "", + "data_transformation_seconds": "", + "database_save_seconds": "" + }, + "save_operation_breakdown": { + "total_save_seconds": "", + "service_init_seconds": "", + "gemma_processing_seconds": "", + "batch_processing_seconds": "", + "objects_saved": 16, + "save_rate_objects_per_second": "" + }, + "memory_usage": "", + "processing_rates": { + "xml_parse_objects_per_second": "", + "transform_objects_per_second": "", + "save_objects_per_second": "" + } + }, + "statistics": { + "elements": { + "created": 4, + "updated": 2, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 1, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 1, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 4, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 10, + "total_objects_updated": 6, + "total_objects_deleted": 0, + "total_objects_unchanged": 0, + "total_errors": 0 + } + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../data/archimate_golden.xml", + "fileName": "archimate_golden.xml" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "documentation", + "properties", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-model-golden" + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "id-model-golden" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 5, + "relationships_count": 2, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-1", + "properties_count": 6, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-1", + "property_name": "Referentie soort", + "camel_case_name": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + [ + "log.warning", + "Property definition not found in map", + { + "object_id": "id-el-1", + "property_def_ref": "propid-99", + "available_refs": [ + "propid-1", + "propid-2", + "propid-3", + "propid-4", + "propid-5" + ] + } + ], + [ + "log.warning", + "Property missing propertyDefinitionRef", + { + "object_id": "id-el-1", + "property_index": 4, + "property_structure": [ + "value" + ] + } + ], + [ + "log.warning", + "Property value is null", + { + "object_id": "id-el-1", + "property_def_ref": "propid-4", + "value": null + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-1", + "processed_count": 3, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-1", + "def_ref": "propid-1" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Backoffice", + "def_ref": "propid-2" + }, + { + "original": "Referentie soort", + "camelCase": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "objectId", + "_propertyMapping", + "businessUnit", + "referentieSoort" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-2", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-2", + "processed_count": 1, + "processed_properties": [ + { + "original": "Remark", + "camelCase": "remark", + "value": "single", + "def_ref": "propid-4" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "remark", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-4", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-4", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-4", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-5", + "properties_count": 2, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-5", + "property_name": "Gemma Online URL", + "camel_case_name": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-5", + "processed_count": 2, + "processed_properties": [ + { + "original": "Gemma Online URL", + "camelCase": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Second unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "gemmaOnlineUrl", + "_propertyMapping", + "businessUnit" + ] + } + ], + [ + "log.debug", + "SPEED: Bulk processing relationships", + { + "item_count": 2 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-rel-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-rel-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-rel-1", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "source", + "target", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing property_definitions", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 5, + "sample_identifiers": [ + "id-el-1", + "id-el-2", + "el-3", + "id-el-4", + "id-el-5" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 5 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 5, + "referenced_elements": 2, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-view-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-view-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "View unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "businessUnit", + "_propertyMapping" + ] + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.error", + "Failed to get default organisation: no default organisation", + [] + ], + [ + "log.error", + "", + [] + ], + [ + "log.info", + "Memory cleanup before database operations", + { + "memory_freed_mb": "", + "gc_cycles_collected": "", + "memory_before_mb": "", + "memory_after_mb": "" + } + ], + [ + "log.info", + "GEMMA IMPORT DEBUG: About to save objects to database", + { + "object_count": 16 + } + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 16, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.debug", + "GEMMA Type property found", + { + "property_name": "type", + "value": "ApplicationComponent", + "object_id": "id-el-1" + } + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 5, + "elements_with_gemma_type": 5, + "gemma_type_variations": { + "ApplicationComponent": 1, + "Capability": 1, + "BusinessActor": 1, + "DataObject": 1, + "Grouping": 1 + }, + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 5, + "12": 2, + "14": 1, + "15": 5, + "13": 2 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-model-golden", + "owner": "importer", + "organisation": "default", + "published": "" + }, + "identifier": "id-model-golden", + "section": "model", + "model_identifier": "id-model-golden", + "xml": { + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Golden model" + }, + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + }, + "name": "Golden model", + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + }, + ":identifier": "id-model-golden" + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-1", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "id-el-1" + }, + "identifier": "id-el-1", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-1", + ":identifier": "id-el-1", + "xsi:type": "ApplicationComponent" + }, + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Zaaksysteem" + }, + "documentation": { + "_value": "Handles cases" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-1" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Backoffice" + } + }, + { + "_propertyDefinitionRef": "propid-3", + "_attributes": { + "propertyDefinitionRef": "propid-3", + ":propertyDefinitionRef": "propid-3" + }, + "___propertyDefinitionRef": "propid-3", + "value": { + "_value": "Referentiecomponent" + } + }, + { + "_propertyDefinitionRef": "propid-99", + "_attributes": { + "propertyDefinitionRef": "propid-99", + ":propertyDefinitionRef": "propid-99" + }, + "___propertyDefinitionRef": "propid-99", + "value": { + "_value": "Unknown definition" + } + }, + { + "value": { + "_value": "No definition ref" + } + }, + { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4" + } + ] + }, + "_essential_data": true + }, + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "_propertyMapping": { + "objectId": "Object ID", + "businessUnit": "Business Unit", + "referentieSoort": "Referentie soort" + }, + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-2", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "el-2" + }, + "identifier": "id-el-2", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-2", + ":identifier": "id-el-2", + "xsi:type": "Capability" + }, + "name": { + "_value": "Zaakgericht werken" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4", + "value": { + "_value": "single" + } + } + }, + "_essential_data": true + }, + "name": "Zaakgericht werken", + "type": "Capability", + "remark": "single", + "_propertyMapping": { + "remark": "Remark" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-3", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "el-3" + }, + "identifier": "el-3", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "el-3", + ":identifier": "el-3", + "xsi:type": "BusinessActor" + }, + "name": [], + "documentation": [], + "_essential_data": true + }, + "name": "", + "omschrijving": "", + "type": "BusinessActor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-4", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "id-el-4" + }, + "identifier": "id-el-4", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-4", + ":identifier": "id-el-4", + "xsi:type": "DataObject" + }, + "name": { + "_value": "Zaakdossier" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-4" + } + } + }, + "_essential_data": true + }, + "name": "Zaakdossier", + "type": "DataObject", + "objectId": "uuid-el-4", + "_propertyMapping": { + "objectId": "Object ID" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-5", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "el-5" + }, + "identifier": "id-el-5", + "section": "element", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-el-5", + ":identifier": "id-el-5", + "xsi:type": "Grouping" + }, + "name": { + "_value": "Standaard groep" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-5", + "_attributes": { + "propertyDefinitionRef": "propid-5", + ":propertyDefinitionRef": "propid-5" + }, + "___propertyDefinitionRef": "propid-5", + "value": { + "_value": "Gemma waarde" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Second unit" + } + } + ] + }, + "_essential_data": true + }, + "name": "Standaard groep", + "type": "Grouping", + "gemmaOnlineUrl": "Gemma waarde", + "_propertyMapping": { + "gemmaOnlineUrl": "Gemma Online URL", + "businessUnit": "Business Unit" + }, + "businessUnit": "Second unit" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "uuid-rel-1", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "id-rel-1" + }, + "identifier": "id-rel-1", + "section": "relationship", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-rel-1", + "source": "id-el-1", + "target": "id-el-2", + ":identifier": "id-rel-1", + ":source": "id-el-1", + ":target": "id-el-2", + "xsi:type": "Serving" + }, + "name": { + "_value": "serves" + }, + "documentation": { + "_value": "Serving relation" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-rel-1" + } + } + }, + "_essential_data": true + }, + "name": "serves", + "omschrijving": "Serving relation", + "type": "Serving", + "source": "id-el-1", + "target": "id-el-2", + "objectId": "uuid-rel-1", + "_propertyMapping": { + "objectId": "Object ID" + } + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-2", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "rel-2" + }, + "identifier": "rel-2", + "section": "relationship", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "rel-2", + "source": "el-3", + "target": "id-el-4", + ":identifier": "rel-2", + ":source": "el-3", + ":target": "id-el-4", + "xsi:type": "Association" + }, + "_essential_data": true + }, + "type": "Association", + "source": "el-3", + "target": "id-el-4" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-model-golden", + "owner": "importer", + "organisation": "default", + "published": "" + }, + "identifier": "org-model-golden", + "section": "organization", + "model_identifier": "id-model-golden", + "name": "Organizations", + "xml": { + "item": [ + { + "label": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Business" + }, + "item": [ + { + "_identifierRef": "id-el-1", + "_attributes": { + "identifierRef": "id-el-1", + ":identifierRef": "id-el-1" + }, + "___identifierRef": "id-el-1" + }, + { + "label": { + "_value": "Nested" + }, + "item": { + "_identifierRef": "id-el-2", + "_attributes": { + "identifierRef": "id-el-2", + ":identifierRef": "id-el-2" + }, + "___identifierRef": "id-el-2" + } + } + ] + }, + { + "label": { + "_value": "Relations" + }, + "item": { + "_identifierRef": "id-rel-1", + "_attributes": { + "identifierRef": "id-rel-1", + ":identifierRef": "id-rel-1" + }, + "___identifierRef": "id-rel-1" + } + } + ] + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-1", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "propid-1" + }, + "identifier": "propid-1", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-1", + "type": "string", + ":identifier": "propid-1", + ":type": "string" + }, + "name": { + "_value": "Object ID" + }, + "_essential_data": true + }, + "name": "Object ID" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-2", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "propid-2" + }, + "identifier": "propid-2", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-2", + "type": "string", + ":identifier": "propid-2", + ":type": "string" + }, + "name": { + "_value": "Business Unit" + }, + "_essential_data": true + }, + "name": "Business Unit" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-3", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "propid-3" + }, + "identifier": "propid-3", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-3", + "type": "string", + ":identifier": "propid-3", + ":type": "string" + }, + "name": { + "_value": "Referentie soort" + }, + "_essential_data": true + }, + "name": "Referentie soort" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-4", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "propid-4" + }, + "identifier": "propid-4", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-4", + "type": "string", + ":identifier": "propid-4", + ":type": "string" + }, + "name": { + "_value": "Remark" + }, + "_essential_data": true + }, + "name": "Remark" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-5", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "propid-5" + }, + "identifier": "propid-5", + "section": "property_definition", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "propid-5", + "type": "string", + ":identifier": "propid-5", + ":type": "string" + }, + "name": { + "_value": "Gemma Online URL" + }, + "_essential_data": true + }, + "name": "Gemma Online URL" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "id-view-1", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "id-view-1" + }, + "identifier": "id-view-1", + "section": "view", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "id-view-1", + "viewpoint": "Layered", + ":identifier": "id-view-1", + ":viewpoint": "Layered", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Overview" + }, + "documentation": { + "_value": "Main view" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "View unit" + } + } + }, + "node": [ + { + "_identifier": "id-node-1", + "_elementRef": "id-el-1", + "_x": "10", + "_y": "20", + "_w": "120", + "_h": "55", + "_attributes": { + "identifier": "id-node-1", + "elementRef": "id-el-1", + "x": "10", + "y": "20", + "w": "120", + "h": "55", + ":identifier": "id-node-1", + ":elementRef": "id-el-1", + ":x": "10", + ":y": "20", + ":w": "120", + ":h": "55", + "xsi:type": "Element" + }, + "___identifier": "id-node-1", + "___elementRef": "id-el-1", + "___x": "10", + "___y": "20", + "___w": "120", + "___h": "55", + "_xsi__type": "Element", + "style": { + "fillColor": { + "_r": "255", + "_g": "255", + "_b": "181", + "_a": "100", + "_attributes": { + "r": "255", + "g": "255", + "b": "181", + "a": "100", + ":r": "255", + ":g": "255", + ":b": "181", + ":a": "100" + }, + "___r": "255", + "___g": "255", + "___b": "181", + "___a": "100" + }, + "lineColor": { + "_r": "92", + "_g": "92", + "_b": "92", + "_attributes": { + "r": "92", + "g": "92", + "b": "92", + ":r": "92", + ":g": "92", + ":b": "92" + }, + "___r": "92", + "___g": "92", + "___b": "92" + }, + "font": { + "_name": "Segoe UI", + "_size": "9", + "_attributes": { + "name": "Segoe UI", + "size": "9", + ":name": "Segoe UI", + ":size": "9" + }, + "___name": "Segoe UI", + "___size": "9", + "color": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + } + }, + "node": { + "_identifier": "id-node-2", + "_elementRef": "id-el-2", + "_x": "20", + "_y": "30", + "_w": "60", + "_h": "40", + "_attributes": { + "identifier": "id-node-2", + "elementRef": "id-el-2", + "x": "20", + "y": "30", + "w": "60", + "h": "40", + ":identifier": "id-node-2", + ":elementRef": "id-el-2", + ":x": "20", + ":y": "30", + ":w": "60", + ":h": "40", + "xsi:type": "Element" + }, + "___identifier": "id-node-2", + "___elementRef": "id-el-2", + "___x": "20", + "___y": "30", + "___w": "60", + "___h": "40", + "_xsi__type": "Element" + } + }, + { + "_identifier": "id-node-3", + "_x": "200", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-3", + "x": "200", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-3", + ":x": "200", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Label" + }, + "___identifier": "id-node-3", + "___x": "200", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Label", + "label": { + "_value": "A note" + } + }, + { + "_identifier": "id-node-4", + "_elementRef": "id-el-missing", + "_x": "300", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-4", + "elementRef": "id-el-missing", + "x": "300", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-4", + ":elementRef": "id-el-missing", + ":x": "300", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Element" + }, + "___identifier": "id-node-4", + "___elementRef": "id-el-missing", + "___x": "300", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Element" + } + ], + "connection": { + "_identifier": "id-conn-1", + "_relationshipRef": "id-rel-1", + "_source": "id-node-1", + "_target": "id-node-2", + "_attributes": { + "identifier": "id-conn-1", + "relationshipRef": "id-rel-1", + "source": "id-node-1", + "target": "id-node-2", + ":identifier": "id-conn-1", + ":relationshipRef": "id-rel-1", + ":source": "id-node-1", + ":target": "id-node-2", + "xsi:type": "Relationship" + }, + "___identifier": "id-conn-1", + "___relationshipRef": "id-rel-1", + "___source": "id-node-1", + "___target": "id-node-2", + "_xsi__type": "Relationship", + "style": { + "lineColor": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + }, + "bendpoint": { + "_x": "50", + "_y": "60", + "_attributes": { + "x": "50", + "y": "60", + ":x": "50", + ":y": "60" + }, + "___x": "50", + "___y": "60" + } + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": "Zaaksysteem", + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": "Handles cases", + "elementRef": "id-el-1", + "elementProperties": { + "identifier": "id-el-1", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "section": "element", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + "objectId": "uuid-el-1", + "elementSection": "element" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": "Zaakgericht werken", + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2", + "elementProperties": { + "identifier": "id-el-2", + "name": "Zaakgericht werken", + "section": "element", + "type": "Capability", + "remark": "single" + }, + "elementSection": "element" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ], + "_essential_data": true + }, + "name": "Overview", + "omschrijving": "Main view", + "type": "Diagram", + "businessUnit": "View unit", + "_propertyMapping": { + "businessUnit": "Business Unit" + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": "Zaaksysteem", + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": "Handles cases", + "elementRef": "id-el-1", + "elementProperties": { + "identifier": "id-el-1", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "section": "element", + "type": "ApplicationComponent", + "objectId": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent" + }, + "objectId": "uuid-el-1", + "elementSection": "element" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": "Zaakgericht werken", + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2", + "elementProperties": { + "identifier": "id-el-2", + "name": "Zaakgericht werken", + "section": "element", + "type": "Capability", + "remark": "single" + }, + "elementSection": "element" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ] + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "owner": "importer", + "organisation": "default", + "published": "", + "slug": "view-2" + }, + "identifier": "view-2", + "section": "view", + "model_identifier": "id-model-golden", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Empty view" + }, + "_essential_data": true + }, + "name": "Empty view", + "type": "Diagram" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ] + ] + }, + "classic archimate_golden.xml {\"modelExists\":true}": { + "result": { + "success": true, + "file_info": { + "name": "archimate_golden.xml", + "size": 5163, + "mime_type": "text/xml" + }, + "processing_times": "", + "memory_usage": "", + "statistics": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 16, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 16, + "total_errors": 0 + } + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 16, + "total_errors": 0 + }, + "performance_metrics": { + "items_per_second": "", + "processing_method": "synchronous_batch_processing", + "batch_size_used": 100, + "dataset_size": 0 + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Step 1: Parsing XML to array for complete data capture", + { + "filePath": "/tests/Unit/Service/../../data/archimate_golden.xml" + } + ], + [ + "log.info", + "Step 2: Extracting model identifier and checking for existing model", + [] + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "documentation", + "properties", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-model-golden" + } + ], + [ + "log.debug", + "Checking if model already exists", + { + "model_identifier": "id-model-golden" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "objects.searchObjects", + { + "@self": { + "register": 7, + "schema": 10 + }, + "archimate_id": "id-model-golden", + "_limit": 1 + } + ], + [ + "log.info", + "Model existence check completed", + { + "model_identifier": "id-model-golden", + "exists": true, + "found_count": 1, + "registerId": 7, + "schemaId": 10 + } + ], + [ + "log.info", + "Step 3: Normalizing data structure for JSON blob storage", + [] + ], + [ + "log.info", + "Normalizing ArchiMate data structure for JSON blob storage", + { + "model_identifier": "id-model-golden" + } + ], + [ + "log.info", + "Property definitions extracted and mapped", + { + "total_properties": 5, + "property_mapping": { + "Object ID": "objectId", + "Business Unit": "businessUnit", + "Referentie soort": "referentieSoort", + "Remark": "remark", + "Gemma Online URL": "gemmaOnlineUrl" + } + } + ], + [ + "log.debug", + "Extracted model metadata", + { + "metadata_keys": [ + "identifier", + ":identifier", + "name", + "documentation", + "properties", + "propertyDefinitionMap" + ], + "has_name": true, + "has_documentation": true + } + ], + [ + "log.info", + "Data normalization completed", + { + "model_identifier": "id-model-golden", + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ], + "round_trip_fidelity": "enabled" + } + ], + [ + "log.info", + "Step 4: Converting to OpenRegister objects with @self structure", + [] + ], + [ + "log.info", + "Converting to OpenRegister objects with @self structure", + { + "model_identifier": "id-model-golden" + } + ], + [ + "log.debug", + "Creating model object from metadata", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "organization" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Sections processed", + { + "elements": 5, + "relationships": 2, + "organizations": 1, + "views": 2, + "property_definitions": 5 + } + ], + [ + "log.info", + "Conversion to OpenRegister objects completed", + { + "model_identifier": "id-model-golden", + "total_objects": 16, + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ] + } + ], + [ + "log.info", + "Step 5: Saving objects to database using ObjectService::saveObjects", + [] + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 16, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 0, + "elements_with_gemma_type": 0, + "gemma_type_variations": [], + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 5, + "12": 2, + "14": 1, + "13": 2, + "15": 5 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-model-golden", + "section": "model", + "model_identifier": "id-model-golden", + "xml": { + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Golden model" + }, + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + }, + ":identifier": "id-model-golden", + "name": "Golden model", + "documentation": { + "_value": "Model used to pin the import output" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Model unit" + } + } + }, + "propertyDefinitionMap": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-1", + "slug": "id-el-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-el-1", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-el-1", + ":identifier": "id-el-1", + "xsi:type": "ApplicationComponent" + }, + "name": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Zaaksysteem" + }, + "documentation": { + "_value": "Handles cases" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-1" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Backoffice" + } + }, + { + "_propertyDefinitionRef": "propid-3", + "_attributes": { + "propertyDefinitionRef": "propid-3", + ":propertyDefinitionRef": "propid-3" + }, + "___propertyDefinitionRef": "propid-3", + "value": { + "_value": "Referentiecomponent" + } + }, + { + "_propertyDefinitionRef": "propid-99", + "_attributes": { + "propertyDefinitionRef": "propid-99", + ":propertyDefinitionRef": "propid-99" + }, + "___propertyDefinitionRef": "propid-99", + "value": { + "_value": "Unknown definition" + } + }, + { + "value": { + "_value": "No definition ref" + } + }, + { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4" + } + ] + }, + "_essential_data": true + }, + "type": "ApplicationComponent", + "name": "Zaaksysteem", + "omschrijving": "Handles cases", + "documentation": "Handles cases", + "objectId": "uuid-el-1", + "_propertyMapping": { + "objectId": "Object ID", + "businessUnit": "Business Unit", + "referentieSoort": "Referentie soort", + "remark": "Remark" + }, + "_slug": "uuid-el-1", + "businessUnit": "Backoffice", + "referentieSoort": "Referentiecomponent", + "remark": null + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-2", + "slug": "el-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-el-2", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-el-2", + ":identifier": "id-el-2", + "xsi:type": "Capability" + }, + "name": { + "_value": "Zaakgericht werken" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-4", + "_attributes": { + "propertyDefinitionRef": "propid-4", + ":propertyDefinitionRef": "propid-4" + }, + "___propertyDefinitionRef": "propid-4", + "value": { + "_value": "single" + } + } + }, + "_essential_data": true + }, + "type": "Capability", + "name": "Zaakgericht werken", + "remark": "single", + "_propertyMapping": { + "remark": "Remark" + } + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-3", + "slug": "el-3", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-3", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-3", + ":identifier": "el-3", + "xsi:type": "BusinessActor" + }, + "name": [], + "documentation": [], + "_essential_data": true + }, + "type": "BusinessActor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "uuid-el-4", + "slug": "id-el-4", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-el-4", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-el-4", + ":identifier": "id-el-4", + "xsi:type": "DataObject" + }, + "name": { + "_value": "Zaakdossier" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-el-4" + } + } + }, + "_essential_data": true + }, + "type": "DataObject", + "name": "Zaakdossier", + "objectId": "uuid-el-4", + "_propertyMapping": { + "objectId": "Object ID" + }, + "_slug": "uuid-el-4" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "id-el-5", + "slug": "el-5", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-el-5", + "section": "elements", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-el-5", + ":identifier": "id-el-5", + "xsi:type": "Grouping" + }, + "name": { + "_value": "Standaard groep" + }, + "properties": { + "property": [ + { + "_propertyDefinitionRef": "propid-5", + "_attributes": { + "propertyDefinitionRef": "propid-5", + ":propertyDefinitionRef": "propid-5" + }, + "___propertyDefinitionRef": "propid-5", + "value": { + "_value": "Gemma waarde" + } + }, + { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "Second unit" + } + } + ] + }, + "_essential_data": true + }, + "type": "Grouping", + "name": "Standaard groep", + "gemmaOnlineUrl": "Gemma waarde", + "_propertyMapping": { + "gemmaOnlineUrl": "Gemma Online URL", + "businessUnit": "Business Unit" + }, + "businessUnit": "Second unit" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "uuid-rel-1", + "slug": "id-rel-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-rel-1", + "section": "relationships", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-rel-1", + "source": "id-el-1", + "target": "id-el-2", + ":identifier": "id-rel-1", + ":source": "id-el-1", + ":target": "id-el-2", + "xsi:type": "Serving" + }, + "name": { + "_value": "serves" + }, + "documentation": { + "_value": "Serving relation" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-1", + "_attributes": { + "propertyDefinitionRef": "propid-1", + ":propertyDefinitionRef": "propid-1" + }, + "___propertyDefinitionRef": "propid-1", + "value": { + "_value": "uuid-rel-1" + } + } + }, + "_essential_data": true + }, + "type": "Serving", + "name": "serves", + "omschrijving": "Serving relation", + "documentation": "Serving relation", + "objectId": "uuid-rel-1", + "_propertyMapping": { + "objectId": "Object ID" + }, + "_slug": "uuid-rel-1" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-2", + "slug": "rel-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-2", + "section": "relationships", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-2", + "source": "el-3", + "target": "id-el-4", + ":identifier": "rel-2", + ":source": "el-3", + ":target": "id-el-4", + "xsi:type": "Association" + }, + "_essential_data": true + }, + "type": "Association" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-model-golden", + "slug": "org-model-golden", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "org-model-golden", + "section": "organization", + "model_identifier": "id-model-golden", + "name": "Organizations", + "xml": { + "item": [ + { + "label": { + "_xml__lang": "nl", + "_attributes": { + "xml:lang": "nl" + }, + "_value": "Business" + }, + "item": [ + { + "_identifierRef": "id-el-1", + "_attributes": { + "identifierRef": "id-el-1", + ":identifierRef": "id-el-1" + }, + "___identifierRef": "id-el-1" + }, + { + "label": { + "_value": "Nested" + }, + "item": { + "_identifierRef": "id-el-2", + "_attributes": { + "identifierRef": "id-el-2", + ":identifierRef": "id-el-2" + }, + "___identifierRef": "id-el-2" + } + } + ] + }, + { + "label": { + "_value": "Relations" + }, + "item": { + "_identifierRef": "id-rel-1", + "_attributes": { + "identifierRef": "id-rel-1", + ":identifierRef": "id-rel-1" + }, + "___identifierRef": "id-rel-1" + } + } + ] + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "id-view-1", + "slug": "view-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-view-1", + "section": "views", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "id-view-1", + "viewpoint": "Layered", + ":identifier": "id-view-1", + ":viewpoint": "Layered", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Overview" + }, + "documentation": { + "_value": "Main view" + }, + "properties": { + "property": { + "_propertyDefinitionRef": "propid-2", + "_attributes": { + "propertyDefinitionRef": "propid-2", + ":propertyDefinitionRef": "propid-2" + }, + "___propertyDefinitionRef": "propid-2", + "value": { + "_value": "View unit" + } + } + }, + "node": [ + { + "_identifier": "id-node-1", + "_elementRef": "id-el-1", + "_x": "10", + "_y": "20", + "_w": "120", + "_h": "55", + "_attributes": { + "identifier": "id-node-1", + "elementRef": "id-el-1", + "x": "10", + "y": "20", + "w": "120", + "h": "55", + ":identifier": "id-node-1", + ":elementRef": "id-el-1", + ":x": "10", + ":y": "20", + ":w": "120", + ":h": "55", + "xsi:type": "Element" + }, + "___identifier": "id-node-1", + "___elementRef": "id-el-1", + "___x": "10", + "___y": "20", + "___w": "120", + "___h": "55", + "_xsi__type": "Element", + "style": { + "fillColor": { + "_r": "255", + "_g": "255", + "_b": "181", + "_a": "100", + "_attributes": { + "r": "255", + "g": "255", + "b": "181", + "a": "100", + ":r": "255", + ":g": "255", + ":b": "181", + ":a": "100" + }, + "___r": "255", + "___g": "255", + "___b": "181", + "___a": "100" + }, + "lineColor": { + "_r": "92", + "_g": "92", + "_b": "92", + "_attributes": { + "r": "92", + "g": "92", + "b": "92", + ":r": "92", + ":g": "92", + ":b": "92" + }, + "___r": "92", + "___g": "92", + "___b": "92" + }, + "font": { + "_name": "Segoe UI", + "_size": "9", + "_attributes": { + "name": "Segoe UI", + "size": "9", + ":name": "Segoe UI", + ":size": "9" + }, + "___name": "Segoe UI", + "___size": "9", + "color": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + } + }, + "node": { + "_identifier": "id-node-2", + "_elementRef": "id-el-2", + "_x": "20", + "_y": "30", + "_w": "60", + "_h": "40", + "_attributes": { + "identifier": "id-node-2", + "elementRef": "id-el-2", + "x": "20", + "y": "30", + "w": "60", + "h": "40", + ":identifier": "id-node-2", + ":elementRef": "id-el-2", + ":x": "20", + ":y": "30", + ":w": "60", + ":h": "40", + "xsi:type": "Element" + }, + "___identifier": "id-node-2", + "___elementRef": "id-el-2", + "___x": "20", + "___y": "30", + "___w": "60", + "___h": "40", + "_xsi__type": "Element" + } + }, + { + "_identifier": "id-node-3", + "_x": "200", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-3", + "x": "200", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-3", + ":x": "200", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Label" + }, + "___identifier": "id-node-3", + "___x": "200", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Label", + "label": { + "_value": "A note" + } + }, + { + "_identifier": "id-node-4", + "_elementRef": "id-el-missing", + "_x": "300", + "_y": "20", + "_w": "100", + "_h": "30", + "_attributes": { + "identifier": "id-node-4", + "elementRef": "id-el-missing", + "x": "300", + "y": "20", + "w": "100", + "h": "30", + ":identifier": "id-node-4", + ":elementRef": "id-el-missing", + ":x": "300", + ":y": "20", + ":w": "100", + ":h": "30", + "xsi:type": "Element" + }, + "___identifier": "id-node-4", + "___elementRef": "id-el-missing", + "___x": "300", + "___y": "20", + "___w": "100", + "___h": "30", + "_xsi__type": "Element" + } + ], + "connection": { + "_identifier": "id-conn-1", + "_relationshipRef": "id-rel-1", + "_source": "id-node-1", + "_target": "id-node-2", + "_attributes": { + "identifier": "id-conn-1", + "relationshipRef": "id-rel-1", + "source": "id-node-1", + "target": "id-node-2", + ":identifier": "id-conn-1", + ":relationshipRef": "id-rel-1", + ":source": "id-node-1", + ":target": "id-node-2", + "xsi:type": "Relationship" + }, + "___identifier": "id-conn-1", + "___relationshipRef": "id-rel-1", + "___source": "id-node-1", + "___target": "id-node-2", + "_xsi__type": "Relationship", + "style": { + "lineColor": { + "_r": "0", + "_g": "0", + "_b": "0", + "_attributes": { + "r": "0", + "g": "0", + "b": "0", + ":r": "0", + ":g": "0", + ":b": "0" + }, + "___r": "0", + "___g": "0", + "___b": "0" + } + }, + "bendpoint": { + "_x": "50", + "_y": "60", + "_attributes": { + "x": "50", + "y": "60", + ":x": "50", + ":y": "60" + }, + "___x": "50", + "___y": "60" + } + }, + "viewNodes": [ + { + "modelNodeId": "id-el-1", + "viewNodeId": "id-node-1", + "x": 10, + "y": 20, + "width": 120, + "height": 55, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 181)", + "borderColor": "rgb(92, 92, 92)", + "font": { + "name": "Segoe UI", + "size": 9, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-1" + }, + { + "modelNodeId": "id-el-2", + "viewNodeId": "id-node-2", + "x": 20, + "y": 30, + "width": 60, + "height": 40, + "parent": "id-node-1", + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-2" + }, + { + "modelNodeId": null, + "viewNodeId": "id-node-3", + "x": 200, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": "A note", + "type": "label", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": null + }, + { + "modelNodeId": "id-el-missing", + "viewNodeId": "id-node-4", + "x": 300, + "y": 20, + "width": 100, + "height": 30, + "parent": null, + "name": null, + "type": "element", + "color": "rgb(255, 255, 255)", + "borderColor": "rgb(0, 0, 0)", + "font": { + "name": "Segoe UI, Arial", + "size": 12, + "style": "normal", + "color": "rgb(0, 0, 0)" + }, + "description": null, + "elementRef": "id-el-missing" + } + ], + "viewRelationships": [ + { + "modelRelationshipId": "id-rel-1", + "sourceId": "id-node-1", + "targetId": "id-node-2", + "viewRelationshipId": "id-conn-1", + "type": "", + "bendpoints": [ + { + "x": 50, + "y": 60 + } + ], + "label": [] + } + ], + "_essential_data": true + }, + "type": "Diagram", + "name": "Overview", + "omschrijving": "Main view", + "documentation": "Main view", + "businessUnit": "View unit", + "_propertyMapping": { + "businessUnit": "Business Unit" + } + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "slug": "view-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-2", + "section": "views", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2", + "xsi:type": "Diagram" + }, + "name": { + "_value": "Empty view" + }, + "_essential_data": true + }, + "type": "Diagram", + "name": "Empty view" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 2, + "saved": 1, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-1", + "slug": "propid-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-1", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-1", + "type": "string", + ":identifier": "propid-1", + ":type": "string" + }, + "name": { + "_value": "Object ID" + }, + "_essential_data": true + }, + "name": "Object ID" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-2", + "slug": "propid-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-2", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-2", + "type": "string", + ":identifier": "propid-2", + ":type": "string" + }, + "name": { + "_value": "Business Unit" + }, + "_essential_data": true + }, + "name": "Business Unit" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-3", + "slug": "propid-3", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-3", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-3", + "type": "string", + ":identifier": "propid-3", + ":type": "string" + }, + "name": { + "_value": "Referentie soort" + }, + "_essential_data": true + }, + "name": "Referentie soort" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-4", + "slug": "propid-4", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-4", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-4", + "type": "string", + ":identifier": "propid-4", + ":type": "string" + }, + "name": { + "_value": "Remark" + }, + "_essential_data": true + }, + "name": "Remark" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "propid-5", + "slug": "propid-5", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "propid-5", + "section": "property_definitions", + "model_identifier": "id-model-golden", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "propid-5", + "type": "string", + ":identifier": "propid-5", + ":type": "string" + }, + "name": { + "_value": "Gemma Online URL" + }, + "_essential_data": true + }, + "name": "Gemma Online URL" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 5, + "saved": 4, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ], + [ + "log.info", + "[ArchiMate] Using lastSaveResult for statistics", + { + "saved_count": 10, + "updated_count": 6, + "unchanged_count": 0, + "invalid_count": 0, + "keys_present": [ + "saved", + "updated", + "unchanged", + "invalid", + "countsBySchema" + ] + } + ], + [ + "log.info", + "[ArchiMate] Statistics summary calculated", + { + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 16, + "total_errors": 0 + }, + "section_counts": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 16, + "errors": 0 + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + } + } + } + ], + [ + "log.info", + "ArchiMate XML import completed successfully", + { + "model_identifier": "id-model-golden", + "model_exists": true, + "imported_objects": 0, + "round_trip_fidelity": "enabled" + } + ] + ] + }, + "optimized archimate_golden.xml {\"noViewSchema\":true}": { + "result": { + "success": false, + "error": "Schema ID for section 'view' is not configured. Expected object type: 'view'" + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../data/archimate_golden.xml", + "fileName": "archimate_golden.xml" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "documentation", + "properties", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-model-golden" + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "id-model-golden" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 5, + "relationships_count": 2, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-1", + "properties_count": 6, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-1", + "property_name": "Referentie soort", + "camel_case_name": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + [ + "log.warning", + "Property definition not found in map", + { + "object_id": "id-el-1", + "property_def_ref": "propid-99", + "available_refs": [ + "propid-1", + "propid-2", + "propid-3", + "propid-4", + "propid-5" + ] + } + ], + [ + "log.warning", + "Property missing propertyDefinitionRef", + { + "object_id": "id-el-1", + "property_index": 4, + "property_structure": [ + "value" + ] + } + ], + [ + "log.warning", + "Property value is null", + { + "object_id": "id-el-1", + "property_def_ref": "propid-4", + "value": null + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-1", + "processed_count": 3, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-1", + "def_ref": "propid-1" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Backoffice", + "def_ref": "propid-2" + }, + { + "original": "Referentie soort", + "camelCase": "referentieSoort", + "value": "Referentiecomponent", + "def_ref": "propid-3" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "objectId", + "_propertyMapping", + "businessUnit", + "referentieSoort" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-2", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-2", + "processed_count": 1, + "processed_properties": [ + { + "original": "Remark", + "camelCase": "remark", + "value": "single", + "def_ref": "propid-4" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "remark", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-4", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-4", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-el-4", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-el-5", + "properties_count": 2, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.info", + "GEMMA type property processed", + { + "object_id": "id-el-5", + "property_name": "Gemma Online URL", + "camel_case_name": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-el-5", + "processed_count": 2, + "processed_properties": [ + { + "original": "Gemma Online URL", + "camelCase": "gemmaOnlineUrl", + "value": "Gemma waarde", + "def_ref": "propid-5" + }, + { + "original": "Business Unit", + "camelCase": "businessUnit", + "value": "Second unit", + "def_ref": "propid-2" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "type", + "gemmaOnlineUrl", + "_propertyMapping", + "businessUnit" + ] + } + ], + [ + "log.debug", + "SPEED: Bulk processing relationships", + { + "item_count": 2 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Flattening properties for object", + { + "object_id": "id-rel-1", + "properties_count": 1, + "property_definition_map_size": 5, + "sample_property_definitions": { + "propid-1": "Object ID", + "propid-2": "Business Unit", + "propid-3": "Referentie soort", + "propid-4": "Remark", + "propid-5": "Gemma Online URL" + } + } + ], + [ + "log.debug", + "Property flattening completed", + { + "object_id": "id-rel-1", + "processed_count": 1, + "processed_properties": [ + { + "original": "Object ID", + "camelCase": "objectId", + "value": "uuid-rel-1", + "def_ref": "propid-1" + } + ], + "object_keys_after_flattening": [ + "@self", + "identifier", + "section", + "model_identifier", + "xml", + "name", + "omschrijving", + "type", + "source", + "target", + "objectId", + "_propertyMapping" + ] + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing property_definitions", + { + "item_count": 5 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 5, + "sample_identifiers": [ + "id-el-1", + "id-el-2", + "el-3", + "id-el-4", + "id-el-5" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 5 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 5, + "referenced_elements": 2, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.error", + "OPTIMIZED ArchiMate import failed", + { + "error": "Schema ID for section 'view' is not configured. Expected object type: 'view'", + "file_path": "/tests/Unit/Service/../../data/archimate_golden.xml" + } + ] + ] + }, + "optimized big1.xml []": { + "result": { + "success": true, + "file_info": { + "name": "big1.xml", + "size": 5124 + }, + "performance_metrics": { + "total_time_seconds": "", + "items_per_second": "", + "objects_processed": 55, + "timing_breakdown": { + "cache_initialization_seconds": "", + "xml_parsing_seconds": "", + "memory_cleanup_seconds": "", + "model_identifier_extraction_seconds": "", + "data_transformation_seconds": "", + "database_save_seconds": "" + }, + "save_operation_breakdown": { + "total_save_seconds": "", + "service_init_seconds": "", + "gemma_processing_seconds": "", + "batch_processing_seconds": "", + "objects_saved": 55, + "save_rate_objects_per_second": "" + }, + "memory_usage": "", + "processing_rates": { + "xml_parse_objects_per_second": "", + "transform_objects_per_second": "", + "save_objects_per_second": "" + } + }, + "statistics": { + "elements": { + "created": 20, + "updated": 2, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 11, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 9, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 9, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 49, + "total_objects_updated": 6, + "total_objects_deleted": 0, + "total_objects_unchanged": 0, + "total_errors": 0 + } + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../fixtures/archimate/big1.xml", + "fileName": "big1.xml" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig" + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 21, + "relationships_count": 12, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 21 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing relationships", + { + "item_count": 12 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing property_definitions", + { + "item_count": 10 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 21, + "sample_identifiers": [ + "el-00", + "el-01", + "el-02", + "el-03", + "el-04" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 21 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 21, + "referenced_elements": 0, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Memory cleanup before database operations", + { + "memory_freed_mb": "", + "gc_cycles_collected": "", + "memory_before_mb": "", + "memory_after_mb": "" + } + ], + [ + "log.info", + "GEMMA IMPORT DEBUG: About to save objects to database", + { + "object_count": 55 + } + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 55, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.debug", + "GEMMA Type property found", + { + "property_name": "type", + "value": "Role", + "object_id": "el-00" + } + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 21, + "elements_with_gemma_type": 21, + "gemma_type_variations": { + "Role": 7, + "Actor": 13, + "Second": 1 + }, + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 21, + "12": 12, + "14": 1, + "15": 10, + "13": 10 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "section": "model", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "name": { + "_value": "Big model" + }, + "documentation": "", + "properties": [], + "propertyDefinitionMap": { + "pd-0": "Prop 0", + "pd-1": "Prop 1", + "pd-2": "Prop 2", + "pd-3": "Prop 3", + "pd-4": "Prop 4", + "pd-5": "Prop 5", + "pd-6": "Prop 6", + "pd-7": "Prop 7", + "pd-8": "Prop 8" + } + }, + "name": "Big model", + "documentation": "", + "properties": [], + "propertyDefinitionMap": { + "pd-0": "Prop 0", + "pd-1": "Prop 1", + "pd-2": "Prop 2", + "pd-3": "Prop 3", + "pd-4": "Prop 4", + "pd-5": "Prop 5", + "pd-6": "Prop 6", + "pd-7": "Prop 7", + "pd-8": "Prop 8" + }, + ":identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig" + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-00", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-00" + }, + "identifier": "el-00", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-00", + ":identifier": "el-00", + "xsi:type": "Role" + }, + "name": { + "_value": "el-00" + }, + "_essential_data": true + }, + "name": "el-00", + "type": "Role" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-01", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-01" + }, + "identifier": "el-01", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-01", + ":identifier": "el-01", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-01" + }, + "_essential_data": true + }, + "name": "el-01", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-02", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-02" + }, + "identifier": "el-02", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-02", + ":identifier": "el-02", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-02" + }, + "_essential_data": true + }, + "name": "el-02", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-03", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-03" + }, + "identifier": "el-03", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-03", + ":identifier": "el-03", + "xsi:type": "Role" + }, + "name": { + "_value": "el-03" + }, + "_essential_data": true + }, + "name": "el-03", + "type": "Role" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-04", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-04" + }, + "identifier": "el-04", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-04", + ":identifier": "el-04", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-04" + }, + "_essential_data": true + }, + "name": "el-04", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-05", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-05" + }, + "identifier": "el-05", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-05", + ":identifier": "el-05", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-05" + }, + "_essential_data": true + }, + "name": "el-05", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-06", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-06" + }, + "identifier": "el-06", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-06", + ":identifier": "el-06", + "xsi:type": "Role" + }, + "name": { + "_value": "el-06" + }, + "_essential_data": true + }, + "name": "el-06", + "type": "Role" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-07", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-07" + }, + "identifier": "el-07", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-07", + ":identifier": "el-07", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-07" + }, + "_essential_data": true + }, + "name": "el-07", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-08", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-08" + }, + "identifier": "el-08", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-08", + ":identifier": "el-08", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-08" + }, + "_essential_data": true + }, + "name": "el-08", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-09", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-09" + }, + "identifier": "el-09", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-09", + ":identifier": "el-09", + "xsi:type": "Role" + }, + "name": { + "_value": "el-09" + }, + "_essential_data": true + }, + "name": "el-09", + "type": "Role" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-10", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-10" + }, + "identifier": "el-10", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-10", + ":identifier": "el-10", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-10" + }, + "_essential_data": true + }, + "name": "el-10", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-11", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-11" + }, + "identifier": "el-11", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-11", + ":identifier": "el-11", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-11" + }, + "_essential_data": true + }, + "name": "el-11", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-12", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-12" + }, + "identifier": "el-12", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-12", + ":identifier": "el-12", + "xsi:type": "Role" + }, + "name": { + "_value": "el-12" + }, + "_essential_data": true + }, + "name": "el-12", + "type": "Role" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-13", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-13" + }, + "identifier": "el-13", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-13", + ":identifier": "el-13", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-13" + }, + "_essential_data": true + }, + "name": "el-13", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-14", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-14" + }, + "identifier": "el-14", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-14", + ":identifier": "el-14", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-14" + }, + "_essential_data": true + }, + "name": "el-14", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-15", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-15" + }, + "identifier": "el-15", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-15", + ":identifier": "el-15", + "xsi:type": "Role" + }, + "name": { + "_value": "el-15" + }, + "_essential_data": true + }, + "name": "el-15", + "type": "Role" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-16", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-16" + }, + "identifier": "el-16", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-16", + ":identifier": "el-16", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-16" + }, + "_essential_data": true + }, + "name": "el-16", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-17", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-17" + }, + "identifier": "el-17", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-17", + ":identifier": "el-17", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-17" + }, + "_essential_data": true + }, + "name": "el-17", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-18", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-18" + }, + "identifier": "el-18", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-18", + ":identifier": "el-18", + "xsi:type": "Role" + }, + "name": { + "_value": "el-18" + }, + "_essential_data": true + }, + "name": "el-18", + "type": "Role" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-19", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-19" + }, + "identifier": "el-19", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "el-19", + ":identifier": "el-19", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-19" + }, + "_essential_data": true + }, + "name": "el-19", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "dup", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "dup" + }, + "identifier": "dup", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "dup", + ":identifier": "dup", + "xsi:type": "Second" + }, + "name": { + "_value": "dup" + }, + "_essential_data": true + }, + "name": "dup", + "type": "Second" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 21, + "saved": 20, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-00", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-00" + }, + "identifier": "rel-00", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-00", + "source": "el-00", + "target": "el-01", + ":identifier": "rel-00", + ":source": "el-00", + ":target": "el-01", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-00", + "target": "el-01" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-01", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-01" + }, + "identifier": "rel-01", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-01", + "source": "el-01", + "target": "el-02", + ":identifier": "rel-01", + ":source": "el-01", + ":target": "el-02", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow", + "source": "el-01", + "target": "el-02" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-02", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-02" + }, + "identifier": "rel-02", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-02", + "source": "el-02", + "target": "el-03", + ":identifier": "rel-02", + ":source": "el-02", + ":target": "el-03", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-02", + "target": "el-03" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-03", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-03" + }, + "identifier": "rel-03", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-03", + "source": "el-03", + "target": "el-04", + ":identifier": "rel-03", + ":source": "el-03", + ":target": "el-04", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow", + "source": "el-03", + "target": "el-04" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-04", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-04" + }, + "identifier": "rel-04", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-04", + "source": "el-04", + "target": "el-05", + ":identifier": "rel-04", + ":source": "el-04", + ":target": "el-05", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-04", + "target": "el-05" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-05", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-05" + }, + "identifier": "rel-05", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-05", + "source": "el-05", + "target": "el-06", + ":identifier": "rel-05", + ":source": "el-05", + ":target": "el-06", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow", + "source": "el-05", + "target": "el-06" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-06", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-06" + }, + "identifier": "rel-06", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-06", + "source": "el-06", + "target": "el-07", + ":identifier": "rel-06", + ":source": "el-06", + ":target": "el-07", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-06", + "target": "el-07" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-07", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-07" + }, + "identifier": "rel-07", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-07", + "source": "el-07", + "target": "el-08", + ":identifier": "rel-07", + ":source": "el-07", + ":target": "el-08", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow", + "source": "el-07", + "target": "el-08" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-08", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-08" + }, + "identifier": "rel-08", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-08", + "source": "el-08", + "target": "el-09", + ":identifier": "rel-08", + ":source": "el-08", + ":target": "el-09", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-08", + "target": "el-09" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-09", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-09" + }, + "identifier": "rel-09", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-09", + "source": "el-09", + "target": "el-10", + ":identifier": "rel-09", + ":source": "el-09", + ":target": "el-10", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow", + "source": "el-09", + "target": "el-10" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-10", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-10" + }, + "identifier": "rel-10", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-10", + "source": "el-10", + "target": "el-11", + ":identifier": "rel-10", + ":source": "el-10", + ":target": "el-11", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-10", + "target": "el-11" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-11", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-11" + }, + "identifier": "rel-11", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "rel-11", + "source": "el-11", + "target": "el-12", + ":identifier": "rel-11", + ":source": "el-11", + ":target": "el-12", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow", + "source": "el-11", + "target": "el-12" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 12, + "saved": 11, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "section": "organization", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "name": "Organizations", + "xml": { + "item": { + "label": { + "_value": "Root" + }, + "item": [ + { + "_identifierRef": "el-00", + "_attributes": { + "identifierRef": "el-00", + ":identifierRef": "el-00" + }, + "___identifierRef": "el-00" + }, + { + "_identifierRef": "el-01", + "_attributes": { + "identifierRef": "el-01", + ":identifierRef": "el-01" + }, + "___identifierRef": "el-01" + }, + { + "_identifierRef": "el-02", + "_attributes": { + "identifierRef": "el-02", + ":identifierRef": "el-02" + }, + "___identifierRef": "el-02" + }, + { + "_identifierRef": "el-03", + "_attributes": { + "identifierRef": "el-03", + ":identifierRef": "el-03" + }, + "___identifierRef": "el-03" + }, + { + "_identifierRef": "el-04", + "_attributes": { + "identifierRef": "el-04", + ":identifierRef": "el-04" + }, + "___identifierRef": "el-04" + }, + { + "_identifierRef": "el-05", + "_attributes": { + "identifierRef": "el-05", + ":identifierRef": "el-05" + }, + "___identifierRef": "el-05" + }, + { + "_identifierRef": "el-06", + "_attributes": { + "identifierRef": "el-06", + ":identifierRef": "el-06" + }, + "___identifierRef": "el-06" + }, + { + "_identifierRef": "el-07", + "_attributes": { + "identifierRef": "el-07", + ":identifierRef": "el-07" + }, + "___identifierRef": "el-07" + }, + { + "_identifierRef": "el-08", + "_attributes": { + "identifierRef": "el-08", + ":identifierRef": "el-08" + }, + "___identifierRef": "el-08" + }, + { + "_identifierRef": "el-09", + "_attributes": { + "identifierRef": "el-09", + ":identifierRef": "el-09" + }, + "___identifierRef": "el-09" + }, + { + "label": { + "_value": "Sub" + }, + "item": { + "_identifierRef": "rel-01", + "_attributes": { + "identifierRef": "rel-01", + ":identifierRef": "rel-01" + }, + "___identifierRef": "rel-01" + } + } + ] + } + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-0", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-0" + }, + "identifier": "pd-0", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-0", + ":identifier": "pd-0" + }, + "name": { + "_value": "Prop 0" + }, + "_essential_data": true + }, + "name": "Prop 0" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-1" + }, + "identifier": "pd-1", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-1", + ":identifier": "pd-1" + }, + "name": { + "_value": "Prop 1" + }, + "_essential_data": true + }, + "name": "Prop 1" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-2" + }, + "identifier": "pd-2", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-2", + ":identifier": "pd-2" + }, + "name": { + "_value": "Prop 2" + }, + "_essential_data": true + }, + "name": "Prop 2" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-3" + }, + "identifier": "pd-3", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-3", + ":identifier": "pd-3" + }, + "name": { + "_value": "Prop 3" + }, + "_essential_data": true + }, + "name": "Prop 3" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-4" + }, + "identifier": "pd-4", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-4", + ":identifier": "pd-4" + }, + "name": { + "_value": "Prop 4" + }, + "_essential_data": true + }, + "name": "Prop 4" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-5" + }, + "identifier": "pd-5", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-5", + ":identifier": "pd-5" + }, + "name": { + "_value": "Prop 5" + }, + "_essential_data": true + }, + "name": "Prop 5" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-6", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-6" + }, + "identifier": "pd-6", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-6", + ":identifier": "pd-6" + }, + "name": { + "_value": "Prop 6" + }, + "_essential_data": true + }, + "name": "Prop 6" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-7", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-7" + }, + "identifier": "pd-7", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-7", + ":identifier": "pd-7" + }, + "name": { + "_value": "Prop 7" + }, + "_essential_data": true + }, + "name": "Prop 7" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-8", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-8" + }, + "identifier": "pd-8", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-8", + ":identifier": "pd-8" + }, + "name": { + "_value": "Prop 8" + }, + "_essential_data": true + }, + "name": "Prop 8" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-noname", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-noname" + }, + "identifier": "pd-noname", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "pd-noname", + ":identifier": "pd-noname" + }, + "_essential_data": true + } + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 10, + "saved": 9, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-0", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-0" + }, + "identifier": "view-0", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "view-0", + ":identifier": "view-0" + }, + "name": { + "_value": "View 0" + }, + "_essential_data": true + }, + "name": "View 0" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-1" + }, + "identifier": "view-1", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "view-1", + ":identifier": "view-1" + }, + "name": { + "_value": "View 1" + }, + "_essential_data": true + }, + "name": "View 1" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-2" + }, + "identifier": "view-2", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2" + }, + "name": { + "_value": "View 2" + }, + "_essential_data": true + }, + "name": "View 2" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-3" + }, + "identifier": "view-3", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "view-3", + ":identifier": "view-3" + }, + "name": { + "_value": "View 3" + }, + "_essential_data": true + }, + "name": "View 3" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-4" + }, + "identifier": "view-4", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "view-4", + ":identifier": "view-4" + }, + "name": { + "_value": "View 4" + }, + "_essential_data": true + }, + "name": "View 4" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-5" + }, + "identifier": "view-5", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "view-5", + ":identifier": "view-5" + }, + "name": { + "_value": "View 5" + }, + "_essential_data": true + }, + "name": "View 5" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-6", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-6" + }, + "identifier": "view-6", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "view-6", + ":identifier": "view-6" + }, + "name": { + "_value": "View 6" + }, + "_essential_data": true + }, + "name": "View 6" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-7", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-7" + }, + "identifier": "view-7", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "view-7", + ":identifier": "view-7" + }, + "name": { + "_value": "View 7" + }, + "_essential_data": true + }, + "name": "View 7" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-noname", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-noname" + }, + "identifier": "view-noname", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "view-noname", + ":identifier": "view-noname" + }, + "_essential_data": true + } + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "" + }, + "identifier": "", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "_attributes": { + "identifier": "", + ":identifier": "" + }, + "name": { + "_value": "Ignored" + }, + "_essential_data": true + }, + "name": "Ignored" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 10, + "saved": 9, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ] + ] + }, + "classic big1.xml []": { + "result": { + "success": true, + "file_info": { + "name": "big1.xml", + "size": 5124, + "mime_type": "text/xml" + }, + "processing_times": "", + "memory_usage": "", + "statistics": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 54, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 54, + "total_errors": 0 + } + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 54, + "total_errors": 0 + }, + "performance_metrics": { + "items_per_second": "", + "processing_method": "synchronous_batch_processing", + "batch_size_used": 100, + "dataset_size": 0 + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Step 1: Parsing XML to array for complete data capture", + { + "filePath": "/tests/Unit/Service/../../fixtures/archimate/big1.xml" + } + ], + [ + "log.info", + "Step 2: Extracting model identifier and checking for existing model", + [] + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "name", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig" + } + ], + [ + "log.debug", + "Checking if model already exists", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "objects.searchObjects", + { + "@self": { + "register": 7, + "schema": 10 + }, + "archimate_id": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "_limit": 1 + } + ], + [ + "log.info", + "Model existence check completed", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "exists": false, + "found_count": 0, + "registerId": 7, + "schemaId": 10 + } + ], + [ + "log.info", + "Step 3: Normalizing data structure for JSON blob storage", + [] + ], + [ + "log.info", + "Normalizing ArchiMate data structure for JSON blob storage", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig" + } + ], + [ + "log.info", + "Property definitions extracted and mapped", + { + "total_properties": 9, + "property_mapping": { + "Prop 0": "prop0", + "Prop 1": "prop1", + "Prop 2": "prop2", + "Prop 3": "prop3", + "Prop 4": "prop4", + "Prop 5": "prop5", + "Prop 6": "prop6", + "Prop 7": "prop7", + "Prop 8": "prop8" + } + } + ], + [ + "log.debug", + "Extracted model metadata", + { + "metadata_keys": [ + "identifier", + ":identifier", + "name", + "propertyDefinitionMap" + ], + "has_name": true, + "has_documentation": false + } + ], + [ + "log.info", + "Data normalization completed", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ], + "round_trip_fidelity": "enabled" + } + ], + [ + "log.info", + "Step 4: Converting to OpenRegister objects with @self structure", + [] + ], + [ + "log.info", + "Converting to OpenRegister objects with @self structure", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig" + } + ], + [ + "log.debug", + "Creating model object from metadata", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "organization" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Sections processed", + { + "elements": 21, + "relationships": 12, + "organizations": 1, + "views": 9, + "property_definitions": 10 + } + ], + [ + "log.info", + "Conversion to OpenRegister objects completed", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "total_objects": 54, + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ] + } + ], + [ + "log.info", + "Step 5: Saving objects to database using ObjectService::saveObjects", + [] + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 54, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 0, + "elements_with_gemma_type": 0, + "gemma_type_variations": [], + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 21, + "12": 12, + "14": 1, + "13": 9, + "15": 10 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "section": "model", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "xml": { + "name": { + "_value": "Big model" + }, + "propertyDefinitionMap": { + "pd-0": "Prop 0", + "pd-1": "Prop 1", + "pd-2": "Prop 2", + "pd-3": "Prop 3", + "pd-4": "Prop 4", + "pd-5": "Prop 5", + "pd-6": "Prop 6", + "pd-7": "Prop 7", + "pd-8": "Prop 8" + } + }, + ":identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "name": "Big model", + "propertyDefinitionMap": { + "pd-0": "Prop 0", + "pd-1": "Prop 1", + "pd-2": "Prop 2", + "pd-3": "Prop 3", + "pd-4": "Prop 4", + "pd-5": "Prop 5", + "pd-6": "Prop 6", + "pd-7": "Prop 7", + "pd-8": "Prop 8" + } + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-00", + "slug": "el-00", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-00", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-00", + ":identifier": "el-00", + "xsi:type": "Role" + }, + "name": { + "_value": "el-00" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-00" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-01", + "slug": "el-01", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-01", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-01", + ":identifier": "el-01", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-01" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-01" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-02", + "slug": "el-02", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-02", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-02", + ":identifier": "el-02", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-02" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-02" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-03", + "slug": "el-03", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-03", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-03", + ":identifier": "el-03", + "xsi:type": "Role" + }, + "name": { + "_value": "el-03" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-03" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-04", + "slug": "el-04", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-04", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-04", + ":identifier": "el-04", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-04" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-04" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-05", + "slug": "el-05", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-05", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-05", + ":identifier": "el-05", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-05" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-05" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-06", + "slug": "el-06", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-06", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-06", + ":identifier": "el-06", + "xsi:type": "Role" + }, + "name": { + "_value": "el-06" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-06" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-07", + "slug": "el-07", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-07", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-07", + ":identifier": "el-07", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-07" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-07" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-08", + "slug": "el-08", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-08", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-08", + ":identifier": "el-08", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-08" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-08" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-09", + "slug": "el-09", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-09", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-09", + ":identifier": "el-09", + "xsi:type": "Role" + }, + "name": { + "_value": "el-09" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-09" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-10", + "slug": "el-10", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-10", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-10", + ":identifier": "el-10", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-10" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-10" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-11", + "slug": "el-11", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-11", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-11", + ":identifier": "el-11", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-11" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-11" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-12", + "slug": "el-12", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-12", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-12", + ":identifier": "el-12", + "xsi:type": "Role" + }, + "name": { + "_value": "el-12" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-12" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-13", + "slug": "el-13", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-13", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-13", + ":identifier": "el-13", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-13" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-13" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-14", + "slug": "el-14", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-14", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-14", + ":identifier": "el-14", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-14" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-14" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-15", + "slug": "el-15", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-15", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-15", + ":identifier": "el-15", + "xsi:type": "Role" + }, + "name": { + "_value": "el-15" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-15" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-16", + "slug": "el-16", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-16", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-16", + ":identifier": "el-16", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-16" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-16" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-17", + "slug": "el-17", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-17", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-17", + ":identifier": "el-17", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-17" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-17" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-18", + "slug": "el-18", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-18", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-18", + ":identifier": "el-18", + "xsi:type": "Role" + }, + "name": { + "_value": "el-18" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-18" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-19", + "slug": "el-19", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-19", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-19", + ":identifier": "el-19", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-19" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-19" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "dup", + "slug": "dup", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "dup", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "dup", + ":identifier": "dup", + "xsi:type": "Second" + }, + "name": { + "_value": "dup" + }, + "_essential_data": true + }, + "type": "Second", + "name": "dup" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 21, + "saved": 20, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-00", + "slug": "rel-00", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-00", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-00", + "source": "el-00", + "target": "el-01", + ":identifier": "rel-00", + ":source": "el-00", + ":target": "el-01", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-01", + "slug": "rel-01", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-01", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-01", + "source": "el-01", + "target": "el-02", + ":identifier": "rel-01", + ":source": "el-01", + ":target": "el-02", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-02", + "slug": "rel-02", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-02", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-02", + "source": "el-02", + "target": "el-03", + ":identifier": "rel-02", + ":source": "el-02", + ":target": "el-03", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-03", + "slug": "rel-03", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-03", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-03", + "source": "el-03", + "target": "el-04", + ":identifier": "rel-03", + ":source": "el-03", + ":target": "el-04", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-04", + "slug": "rel-04", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-04", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-04", + "source": "el-04", + "target": "el-05", + ":identifier": "rel-04", + ":source": "el-04", + ":target": "el-05", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-05", + "slug": "rel-05", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-05", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-05", + "source": "el-05", + "target": "el-06", + ":identifier": "rel-05", + ":source": "el-05", + ":target": "el-06", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-06", + "slug": "rel-06", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-06", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-06", + "source": "el-06", + "target": "el-07", + ":identifier": "rel-06", + ":source": "el-06", + ":target": "el-07", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-07", + "slug": "rel-07", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-07", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-07", + "source": "el-07", + "target": "el-08", + ":identifier": "rel-07", + ":source": "el-07", + ":target": "el-08", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-08", + "slug": "rel-08", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-08", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-08", + "source": "el-08", + "target": "el-09", + ":identifier": "rel-08", + ":source": "el-08", + ":target": "el-09", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-09", + "slug": "rel-09", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-09", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-09", + "source": "el-09", + "target": "el-10", + ":identifier": "rel-09", + ":source": "el-09", + ":target": "el-10", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-10", + "slug": "rel-10", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-10", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-10", + "source": "el-10", + "target": "el-11", + ":identifier": "rel-10", + ":source": "el-10", + ":target": "el-11", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-11", + "slug": "rel-11", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-11", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-11", + "source": "el-11", + "target": "el-12", + ":identifier": "rel-11", + ":source": "el-11", + ":target": "el-12", + "xsi:type": "Flow" + }, + "_essential_data": true + }, + "type": "Flow" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 12, + "saved": 11, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "slug": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "section": "organization", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "name": "Organizations", + "xml": { + "item": { + "label": { + "_value": "Root" + }, + "item": [ + { + "_identifierRef": "el-00", + "_attributes": { + "identifierRef": "el-00", + ":identifierRef": "el-00" + }, + "___identifierRef": "el-00" + }, + { + "_identifierRef": "el-01", + "_attributes": { + "identifierRef": "el-01", + ":identifierRef": "el-01" + }, + "___identifierRef": "el-01" + }, + { + "_identifierRef": "el-02", + "_attributes": { + "identifierRef": "el-02", + ":identifierRef": "el-02" + }, + "___identifierRef": "el-02" + }, + { + "_identifierRef": "el-03", + "_attributes": { + "identifierRef": "el-03", + ":identifierRef": "el-03" + }, + "___identifierRef": "el-03" + }, + { + "_identifierRef": "el-04", + "_attributes": { + "identifierRef": "el-04", + ":identifierRef": "el-04" + }, + "___identifierRef": "el-04" + }, + { + "_identifierRef": "el-05", + "_attributes": { + "identifierRef": "el-05", + ":identifierRef": "el-05" + }, + "___identifierRef": "el-05" + }, + { + "_identifierRef": "el-06", + "_attributes": { + "identifierRef": "el-06", + ":identifierRef": "el-06" + }, + "___identifierRef": "el-06" + }, + { + "_identifierRef": "el-07", + "_attributes": { + "identifierRef": "el-07", + ":identifierRef": "el-07" + }, + "___identifierRef": "el-07" + }, + { + "_identifierRef": "el-08", + "_attributes": { + "identifierRef": "el-08", + ":identifierRef": "el-08" + }, + "___identifierRef": "el-08" + }, + { + "_identifierRef": "el-09", + "_attributes": { + "identifierRef": "el-09", + ":identifierRef": "el-09" + }, + "___identifierRef": "el-09" + }, + { + "label": { + "_value": "Sub" + }, + "item": { + "_identifierRef": "rel-01", + "_attributes": { + "identifierRef": "rel-01", + ":identifierRef": "rel-01" + }, + "___identifierRef": "rel-01" + } + } + ] + } + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-0", + "slug": "view-0", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-0", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-0", + ":identifier": "view-0" + }, + "name": { + "_value": "View 0" + }, + "_essential_data": true + }, + "name": "View 0" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-1", + "slug": "view-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-1", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-1", + ":identifier": "view-1" + }, + "name": { + "_value": "View 1" + }, + "_essential_data": true + }, + "name": "View 1" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "slug": "view-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-2", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2" + }, + "name": { + "_value": "View 2" + }, + "_essential_data": true + }, + "name": "View 2" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-3", + "slug": "view-3", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-3", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-3", + ":identifier": "view-3" + }, + "name": { + "_value": "View 3" + }, + "_essential_data": true + }, + "name": "View 3" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-4", + "slug": "view-4", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-4", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-4", + ":identifier": "view-4" + }, + "name": { + "_value": "View 4" + }, + "_essential_data": true + }, + "name": "View 4" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-5", + "slug": "view-5", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-5", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-5", + ":identifier": "view-5" + }, + "name": { + "_value": "View 5" + }, + "_essential_data": true + }, + "name": "View 5" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-6", + "slug": "view-6", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-6", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-6", + ":identifier": "view-6" + }, + "name": { + "_value": "View 6" + }, + "_essential_data": true + }, + "name": "View 6" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-7", + "slug": "view-7", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-7", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-7", + ":identifier": "view-7" + }, + "name": { + "_value": "View 7" + }, + "_essential_data": true + }, + "name": "View 7" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-noname", + "slug": "view-noname", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-noname", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-noname", + ":identifier": "view-noname" + }, + "_essential_data": true + } + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 9, + "saved": 8, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-0", + "slug": "pd-0", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-0", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-0", + ":identifier": "pd-0" + }, + "name": { + "_value": "Prop 0" + }, + "_essential_data": true + }, + "name": "Prop 0" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-1", + "slug": "pd-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-1", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-1", + ":identifier": "pd-1" + }, + "name": { + "_value": "Prop 1" + }, + "_essential_data": true + }, + "name": "Prop 1" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-2", + "slug": "pd-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-2", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-2", + ":identifier": "pd-2" + }, + "name": { + "_value": "Prop 2" + }, + "_essential_data": true + }, + "name": "Prop 2" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-3", + "slug": "pd-3", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-3", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-3", + ":identifier": "pd-3" + }, + "name": { + "_value": "Prop 3" + }, + "_essential_data": true + }, + "name": "Prop 3" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-4", + "slug": "pd-4", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-4", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-4", + ":identifier": "pd-4" + }, + "name": { + "_value": "Prop 4" + }, + "_essential_data": true + }, + "name": "Prop 4" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-5", + "slug": "pd-5", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-5", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-5", + ":identifier": "pd-5" + }, + "name": { + "_value": "Prop 5" + }, + "_essential_data": true + }, + "name": "Prop 5" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-6", + "slug": "pd-6", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-6", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-6", + ":identifier": "pd-6" + }, + "name": { + "_value": "Prop 6" + }, + "_essential_data": true + }, + "name": "Prop 6" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-7", + "slug": "pd-7", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-7", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-7", + ":identifier": "pd-7" + }, + "name": { + "_value": "Prop 7" + }, + "_essential_data": true + }, + "name": "Prop 7" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-8", + "slug": "pd-8", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-8", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-8", + ":identifier": "pd-8" + }, + "name": { + "_value": "Prop 8" + }, + "_essential_data": true + }, + "name": "Prop 8" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-noname", + "slug": "pd-noname", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-noname", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-noname", + ":identifier": "pd-noname" + }, + "_essential_data": true + } + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 10, + "saved": 9, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ], + [ + "log.info", + "[ArchiMate] Using lastSaveResult for statistics", + { + "saved_count": 48, + "updated_count": 6, + "unchanged_count": 0, + "invalid_count": 0, + "keys_present": [ + "saved", + "updated", + "unchanged", + "invalid", + "countsBySchema" + ] + } + ], + [ + "log.info", + "[ArchiMate] Statistics summary calculated", + { + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 54, + "total_errors": 0 + }, + "section_counts": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 54, + "errors": 0 + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + } + } + } + ], + [ + "log.info", + "ArchiMate XML import completed successfully", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-orig", + "model_exists": false, + "imported_objects": 0, + "round_trip_fidelity": "enabled" + } + ] + ] + }, + "optimized big2.xml []": { + "result": { + "success": true, + "file_info": { + "name": "big2.xml", + "size": 4567 + }, + "performance_metrics": { + "total_time_seconds": "", + "items_per_second": "", + "objects_processed": 51, + "timing_breakdown": { + "cache_initialization_seconds": "", + "xml_parsing_seconds": "", + "memory_cleanup_seconds": "", + "model_identifier_extraction_seconds": "", + "data_transformation_seconds": "", + "database_save_seconds": "" + }, + "save_operation_breakdown": { + "total_save_seconds": "", + "service_init_seconds": "", + "gemma_processing_seconds": "", + "batch_processing_seconds": "", + "objects_saved": 51, + "save_rate_objects_per_second": "" + }, + "memory_usage": "", + "processing_rates": { + "xml_parse_objects_per_second": "", + "transform_objects_per_second": "", + "save_objects_per_second": "" + } + }, + "statistics": { + "elements": { + "created": 19, + "updated": 2, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 11, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 6, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 9, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 45, + "total_objects_updated": 6, + "total_objects_deleted": 0, + "total_objects_unchanged": 0, + "total_errors": 0 + } + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../fixtures/archimate/big2.xml", + "fileName": "big2.xml" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export" + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 20, + "relationships_count": 12, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 20 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing relationships", + { + "item_count": 12 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing property_definitions", + { + "item_count": 10 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 20, + "sample_identifiers": [ + "el-07", + "el-08", + "el-09", + "el-10", + "el-11" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 20 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 20, + "referenced_elements": 0, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Memory cleanup before database operations", + { + "memory_freed_mb": "", + "gc_cycles_collected": "", + "memory_before_mb": "", + "memory_after_mb": "" + } + ], + [ + "log.info", + "GEMMA IMPORT DEBUG: About to save objects to database", + { + "object_count": 51 + } + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 51, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.debug", + "GEMMA Type property found", + { + "property_name": "type", + "value": "Actor", + "object_id": "el-07" + } + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 20, + "elements_with_gemma_type": 20, + "gemma_type_variations": { + "Actor": 5, + "Changed": 6, + "Role": 2, + "Node": 6, + "Second": 1 + }, + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 20, + "12": 12, + "14": 1, + "15": 10, + "13": 7 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "section": "model", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "name": "", + "documentation": "", + "properties": [], + "propertyDefinitionMap": { + "pd-0": "Renamed 0", + "pd-1": "Prop 1", + "pd-2": "Renamed 2", + "pd-3": "Prop 3", + "pd-4": "Renamed 4", + "pd-5": "Prop 5", + "pd-6": "Renamed 6", + "pd-7": "Prop 7", + "pd-8": "Renamed 8", + "pd-extra": "Extra" + } + }, + "name": "", + "documentation": "", + "properties": [], + "propertyDefinitionMap": { + "pd-0": "Renamed 0", + "pd-1": "Prop 1", + "pd-2": "Renamed 2", + "pd-3": "Prop 3", + "pd-4": "Renamed 4", + "pd-5": "Prop 5", + "pd-6": "Renamed 6", + "pd-7": "Prop 7", + "pd-8": "Renamed 8", + "pd-extra": "Extra" + }, + ":identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export" + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-07", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-07" + }, + "identifier": "el-07", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-07", + ":identifier": "el-07", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-07" + }, + "_essential_data": true + }, + "name": "el-07", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-08", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-08" + }, + "identifier": "el-08", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-08", + ":identifier": "el-08", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-08" + }, + "_essential_data": true + }, + "name": "el-08", + "type": "Changed" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-09", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-09" + }, + "identifier": "el-09", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-09", + ":identifier": "el-09", + "xsi:type": "Role" + }, + "name": { + "_value": "el-09" + }, + "_essential_data": true + }, + "name": "el-09", + "type": "Role" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-10", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-10" + }, + "identifier": "el-10", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-10", + ":identifier": "el-10", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-10" + }, + "_essential_data": true + }, + "name": "el-10", + "type": "Changed" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-11", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-11" + }, + "identifier": "el-11", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-11", + ":identifier": "el-11", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-11" + }, + "_essential_data": true + }, + "name": "el-11", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-12", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-12" + }, + "identifier": "el-12", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-12", + ":identifier": "el-12", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-12" + }, + "_essential_data": true + }, + "name": "el-12", + "type": "Changed" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-13", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-13" + }, + "identifier": "el-13", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-13", + ":identifier": "el-13", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-13" + }, + "_essential_data": true + }, + "name": "el-13", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-14", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-14" + }, + "identifier": "el-14", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-14", + ":identifier": "el-14", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-14" + }, + "_essential_data": true + }, + "name": "el-14", + "type": "Changed" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-15", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-15" + }, + "identifier": "el-15", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-15", + ":identifier": "el-15", + "xsi:type": "Role" + }, + "name": { + "_value": "el-15" + }, + "_essential_data": true + }, + "name": "el-15", + "type": "Role" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-16", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-16" + }, + "identifier": "el-16", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-16", + ":identifier": "el-16", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-16" + }, + "_essential_data": true + }, + "name": "el-16", + "type": "Changed" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-17", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-17" + }, + "identifier": "el-17", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-17", + ":identifier": "el-17", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-17" + }, + "_essential_data": true + }, + "name": "el-17", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-18", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-18" + }, + "identifier": "el-18", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-18", + ":identifier": "el-18", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-18" + }, + "_essential_data": true + }, + "name": "el-18", + "type": "Changed" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-19", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-19" + }, + "identifier": "el-19", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "el-19", + ":identifier": "el-19", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-19" + }, + "_essential_data": true + }, + "name": "el-19", + "type": "Actor" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-0", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "new-0" + }, + "identifier": "new-0", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "new-0", + ":identifier": "new-0", + "xsi:type": "Node" + }, + "name": { + "_value": "new-0" + }, + "_essential_data": true + }, + "name": "new-0", + "type": "Node" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "new-1" + }, + "identifier": "new-1", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "new-1", + ":identifier": "new-1", + "xsi:type": "Node" + }, + "name": { + "_value": "new-1" + }, + "_essential_data": true + }, + "name": "new-1", + "type": "Node" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "new-2" + }, + "identifier": "new-2", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "new-2", + ":identifier": "new-2", + "xsi:type": "Node" + }, + "name": { + "_value": "new-2" + }, + "_essential_data": true + }, + "name": "new-2", + "type": "Node" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "new-3" + }, + "identifier": "new-3", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "new-3", + ":identifier": "new-3", + "xsi:type": "Node" + }, + "name": { + "_value": "new-3" + }, + "_essential_data": true + }, + "name": "new-3", + "type": "Node" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "new-4" + }, + "identifier": "new-4", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "new-4", + ":identifier": "new-4", + "xsi:type": "Node" + }, + "name": { + "_value": "new-4" + }, + "_essential_data": true + }, + "name": "new-4", + "type": "Node" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "new-5" + }, + "identifier": "new-5", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "new-5", + ":identifier": "new-5", + "xsi:type": "Node" + }, + "name": { + "_value": "new-5" + }, + "_essential_data": true + }, + "name": "new-5", + "type": "Node" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "dup", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "dup" + }, + "identifier": "dup", + "section": "element", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "dup", + ":identifier": "dup", + "xsi:type": "Second" + }, + "name": { + "_value": "dup" + }, + "_essential_data": true + }, + "name": "dup", + "type": "Second" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 20, + "saved": 19, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-01", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-01" + }, + "identifier": "rel-01", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-01", + "source": "el-01", + "target": "el-02", + ":identifier": "rel-01", + ":source": "el-01", + ":target": "el-02", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-01", + "target": "el-02" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-02", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-02" + }, + "identifier": "rel-02", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-02", + "source": "el-02", + "target": "el-03", + ":identifier": "rel-02", + ":source": "el-02", + ":target": "el-03", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-02", + "target": "el-03" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-03", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-03" + }, + "identifier": "rel-03", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-03", + "source": "el-03", + "target": "el-05", + ":identifier": "rel-03", + ":source": "el-03", + ":target": "el-05", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-03", + "target": "el-05" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-04", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-04" + }, + "identifier": "rel-04", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-04", + "source": "el-04", + "target": "el-05", + ":identifier": "rel-04", + ":source": "el-04", + ":target": "el-05", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-04", + "target": "el-05" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-05", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-05" + }, + "identifier": "rel-05", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-05", + "source": "el-05", + "target": "el-06", + ":identifier": "rel-05", + ":source": "el-05", + ":target": "el-06", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-05", + "target": "el-06" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-06", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-06" + }, + "identifier": "rel-06", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-06", + "source": "el-06", + "target": "el-08", + ":identifier": "rel-06", + ":source": "el-06", + ":target": "el-08", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-06", + "target": "el-08" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-07", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-07" + }, + "identifier": "rel-07", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-07", + "source": "el-07", + "target": "el-08", + ":identifier": "rel-07", + ":source": "el-07", + ":target": "el-08", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-07", + "target": "el-08" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-08", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-08" + }, + "identifier": "rel-08", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-08", + "source": "el-08", + "target": "el-09", + ":identifier": "rel-08", + ":source": "el-08", + ":target": "el-09", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-08", + "target": "el-09" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-09", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-09" + }, + "identifier": "rel-09", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-09", + "source": "el-09", + "target": "el-11", + ":identifier": "rel-09", + ":source": "el-09", + ":target": "el-11", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-09", + "target": "el-11" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-10", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-10" + }, + "identifier": "rel-10", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-10", + "source": "el-10", + "target": "el-11", + ":identifier": "rel-10", + ":source": "el-10", + ":target": "el-11", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-10", + "target": "el-11" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-11", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-11" + }, + "identifier": "rel-11", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-11", + "source": "el-11", + "target": "el-12", + ":identifier": "rel-11", + ":source": "el-11", + ":target": "el-12", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving", + "source": "el-11", + "target": "el-12" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-new", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "rel-new" + }, + "identifier": "rel-new", + "section": "relationship", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "rel-new", + "source": "x", + "target": "y", + ":identifier": "rel-new", + ":source": "x", + ":target": "y", + "xsi:type": "Access" + }, + "_essential_data": true + }, + "type": "Access", + "source": "x", + "target": "y" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 12, + "saved": 11, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "section": "organization", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "name": "Organizations", + "xml": { + "item": { + "label": { + "_value": "Root" + }, + "item": [ + { + "_identifierRef": "el-03", + "_attributes": { + "identifierRef": "el-03", + ":identifierRef": "el-03" + }, + "___identifierRef": "el-03" + }, + { + "_identifierRef": "el-04", + "_attributes": { + "identifierRef": "el-04", + ":identifierRef": "el-04" + }, + "___identifierRef": "el-04" + }, + { + "_identifierRef": "el-05", + "_attributes": { + "identifierRef": "el-05", + ":identifierRef": "el-05" + }, + "___identifierRef": "el-05" + }, + { + "_identifierRef": "el-06", + "_attributes": { + "identifierRef": "el-06", + ":identifierRef": "el-06" + }, + "___identifierRef": "el-06" + }, + { + "_identifierRef": "el-07", + "_attributes": { + "identifierRef": "el-07", + ":identifierRef": "el-07" + }, + "___identifierRef": "el-07" + }, + { + "_identifierRef": "el-08", + "_attributes": { + "identifierRef": "el-08", + ":identifierRef": "el-08" + }, + "___identifierRef": "el-08" + }, + { + "_identifierRef": "el-09", + "_attributes": { + "identifierRef": "el-09", + ":identifierRef": "el-09" + }, + "___identifierRef": "el-09" + }, + { + "_identifierRef": "new-0", + "_attributes": { + "identifierRef": "new-0", + ":identifierRef": "new-0" + }, + "___identifierRef": "new-0" + } + ] + } + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-0", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-0" + }, + "identifier": "pd-0", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-0", + ":identifier": "pd-0" + }, + "name": { + "_value": "Renamed 0" + }, + "_essential_data": true + }, + "name": "Renamed 0" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-1", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-1" + }, + "identifier": "pd-1", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-1", + ":identifier": "pd-1" + }, + "name": { + "_value": "Prop 1" + }, + "_essential_data": true + }, + "name": "Prop 1" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-2" + }, + "identifier": "pd-2", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-2", + ":identifier": "pd-2" + }, + "name": { + "_value": "Renamed 2" + }, + "_essential_data": true + }, + "name": "Renamed 2" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-3" + }, + "identifier": "pd-3", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-3", + ":identifier": "pd-3" + }, + "name": { + "_value": "Prop 3" + }, + "_essential_data": true + }, + "name": "Prop 3" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-4" + }, + "identifier": "pd-4", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-4", + ":identifier": "pd-4" + }, + "name": { + "_value": "Renamed 4" + }, + "_essential_data": true + }, + "name": "Renamed 4" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-5" + }, + "identifier": "pd-5", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-5", + ":identifier": "pd-5" + }, + "name": { + "_value": "Prop 5" + }, + "_essential_data": true + }, + "name": "Prop 5" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-6", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-6" + }, + "identifier": "pd-6", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-6", + ":identifier": "pd-6" + }, + "name": { + "_value": "Renamed 6" + }, + "_essential_data": true + }, + "name": "Renamed 6" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-7", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-7" + }, + "identifier": "pd-7", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-7", + ":identifier": "pd-7" + }, + "name": { + "_value": "Prop 7" + }, + "_essential_data": true + }, + "name": "Prop 7" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-8", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-8" + }, + "identifier": "pd-8", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-8", + ":identifier": "pd-8" + }, + "name": { + "_value": "Renamed 8" + }, + "_essential_data": true + }, + "name": "Renamed 8" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-extra", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-extra" + }, + "identifier": "pd-extra", + "section": "property_definition", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "pd-extra", + ":identifier": "pd-extra" + }, + "name": { + "_value": "Extra" + }, + "_essential_data": true + }, + "name": "Extra" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 10, + "saved": 9, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-2" + }, + "identifier": "view-2", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2" + }, + "name": { + "_value": "View 2" + }, + "_essential_data": true + }, + "name": "View 2" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-3", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-3" + }, + "identifier": "view-3", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "view-3", + ":identifier": "view-3" + }, + "name": { + "_value": "View 3" + }, + "_essential_data": true + }, + "name": "View 3" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-4", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-4" + }, + "identifier": "view-4", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "view-4", + ":identifier": "view-4" + }, + "name": { + "_value": "View 4" + }, + "_essential_data": true + }, + "name": "View 4" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-5", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-5" + }, + "identifier": "view-5", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "view-5", + ":identifier": "view-5" + }, + "name": { + "_value": "View 5" + }, + "_essential_data": true + }, + "name": "View 5" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-6", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-6" + }, + "identifier": "view-6", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "view-6", + ":identifier": "view-6" + }, + "name": { + "_value": "View 6" + }, + "_essential_data": true + }, + "name": "View 6" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-7", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-7" + }, + "identifier": "view-7", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "view-7", + ":identifier": "view-7" + }, + "name": { + "_value": "View 7" + }, + "_essential_data": true + }, + "name": "View 7" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-noname", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-noname" + }, + "identifier": "view-noname", + "section": "view", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "_attributes": { + "identifier": "view-noname", + ":identifier": "view-noname" + }, + "_essential_data": true + } + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 7, + "saved": 6, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ] + ] + }, + "classic big2.xml []": { + "result": { + "success": true, + "file_info": { + "name": "big2.xml", + "size": 4567, + "mime_type": "text/xml" + }, + "processing_times": "", + "memory_usage": "", + "statistics": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 51, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 51, + "total_errors": 0 + } + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 51, + "total_errors": 0 + }, + "performance_metrics": { + "items_per_second": "", + "processing_method": "synchronous_batch_processing", + "batch_size_used": 100, + "dataset_size": 0 + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Step 1: Parsing XML to array for complete data capture", + { + "filePath": "/tests/Unit/Service/../../fixtures/archimate/big2.xml" + } + ], + [ + "log.info", + "Step 2: Extracting model identifier and checking for existing model", + [] + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "elements", + "relationships", + "organizations", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export" + } + ], + [ + "log.debug", + "Checking if model already exists", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "objects.searchObjects", + { + "@self": { + "register": 7, + "schema": 10 + }, + "archimate_id": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "_limit": 1 + } + ], + [ + "log.info", + "Model existence check completed", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "exists": false, + "found_count": 0, + "registerId": 7, + "schemaId": 10 + } + ], + [ + "log.info", + "Step 3: Normalizing data structure for JSON blob storage", + [] + ], + [ + "log.info", + "Normalizing ArchiMate data structure for JSON blob storage", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export" + } + ], + [ + "log.info", + "Property definitions extracted and mapped", + { + "total_properties": 10, + "property_mapping": { + "Renamed 0": "renamed0", + "Prop 1": "prop1", + "Renamed 2": "renamed2", + "Prop 3": "prop3", + "Renamed 4": "renamed4", + "Prop 5": "prop5", + "Renamed 6": "renamed6", + "Prop 7": "prop7", + "Renamed 8": "renamed8", + "Extra": "extra" + } + } + ], + [ + "log.debug", + "Extracted model metadata", + { + "metadata_keys": [ + "identifier", + ":identifier", + "propertyDefinitionMap" + ], + "has_name": false, + "has_documentation": false + } + ], + [ + "log.info", + "Data normalization completed", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ], + "round_trip_fidelity": "enabled" + } + ], + [ + "log.info", + "Step 4: Converting to OpenRegister objects with @self structure", + [] + ], + [ + "log.info", + "Converting to OpenRegister objects with @self structure", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export" + } + ], + [ + "log.debug", + "Creating model object from metadata", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "relationship" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "organization" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Sections processed", + { + "elements": 20, + "relationships": 12, + "organizations": 1, + "views": 7, + "property_definitions": 10 + } + ], + [ + "log.info", + "Conversion to OpenRegister objects completed", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "total_objects": 51, + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ] + } + ], + [ + "log.info", + "Step 5: Saving objects to database using ObjectService::saveObjects", + [] + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 51, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 0, + "elements_with_gemma_type": 0, + "gemma_type_variations": [], + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 6, + "schemas": { + "10": 1, + "11": 20, + "12": 12, + "14": 1, + "13": 7, + "15": 10 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "section": "model", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "xml": { + "propertyDefinitionMap": { + "pd-0": "Renamed 0", + "pd-1": "Prop 1", + "pd-2": "Renamed 2", + "pd-3": "Prop 3", + "pd-4": "Renamed 4", + "pd-5": "Prop 5", + "pd-6": "Renamed 6", + "pd-7": "Prop 7", + "pd-8": "Renamed 8", + "pd-extra": "Extra" + } + }, + ":identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "propertyDefinitionMap": { + "pd-0": "Renamed 0", + "pd-1": "Prop 1", + "pd-2": "Renamed 2", + "pd-3": "Prop 3", + "pd-4": "Renamed 4", + "pd-5": "Prop 5", + "pd-6": "Renamed 6", + "pd-7": "Prop 7", + "pd-8": "Renamed 8", + "pd-extra": "Extra" + } + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-07", + "slug": "el-07", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-07", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-07", + ":identifier": "el-07", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-07" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-07" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-08", + "slug": "el-08", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-08", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-08", + ":identifier": "el-08", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-08" + }, + "_essential_data": true + }, + "type": "Changed", + "name": "el-08" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-09", + "slug": "el-09", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-09", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-09", + ":identifier": "el-09", + "xsi:type": "Role" + }, + "name": { + "_value": "el-09" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-09" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-10", + "slug": "el-10", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-10", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-10", + ":identifier": "el-10", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-10" + }, + "_essential_data": true + }, + "type": "Changed", + "name": "el-10" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-11", + "slug": "el-11", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-11", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-11", + ":identifier": "el-11", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-11" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-11" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-12", + "slug": "el-12", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-12", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-12", + ":identifier": "el-12", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-12" + }, + "_essential_data": true + }, + "type": "Changed", + "name": "el-12" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-13", + "slug": "el-13", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-13", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-13", + ":identifier": "el-13", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-13" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-13" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-14", + "slug": "el-14", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-14", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-14", + ":identifier": "el-14", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-14" + }, + "_essential_data": true + }, + "type": "Changed", + "name": "el-14" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-15", + "slug": "el-15", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-15", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-15", + ":identifier": "el-15", + "xsi:type": "Role" + }, + "name": { + "_value": "el-15" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-15" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-16", + "slug": "el-16", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-16", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-16", + ":identifier": "el-16", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-16" + }, + "_essential_data": true + }, + "type": "Changed", + "name": "el-16" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-17", + "slug": "el-17", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-17", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-17", + ":identifier": "el-17", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-17" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-17" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-18", + "slug": "el-18", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-18", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-18", + ":identifier": "el-18", + "xsi:type": "Changed" + }, + "name": { + "_value": "el-18" + }, + "_essential_data": true + }, + "type": "Changed", + "name": "el-18" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-19", + "slug": "el-19", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-19", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-19", + ":identifier": "el-19", + "xsi:type": "Actor" + }, + "name": { + "_value": "el-19" + }, + "_essential_data": true + }, + "type": "Actor", + "name": "el-19" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-0", + "slug": "new-0", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "new-0", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "new-0", + ":identifier": "new-0", + "xsi:type": "Node" + }, + "name": { + "_value": "new-0" + }, + "_essential_data": true + }, + "type": "Node", + "name": "new-0" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-1", + "slug": "new-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "new-1", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "new-1", + ":identifier": "new-1", + "xsi:type": "Node" + }, + "name": { + "_value": "new-1" + }, + "_essential_data": true + }, + "type": "Node", + "name": "new-1" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-2", + "slug": "new-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "new-2", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "new-2", + ":identifier": "new-2", + "xsi:type": "Node" + }, + "name": { + "_value": "new-2" + }, + "_essential_data": true + }, + "type": "Node", + "name": "new-2" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-3", + "slug": "new-3", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "new-3", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "new-3", + ":identifier": "new-3", + "xsi:type": "Node" + }, + "name": { + "_value": "new-3" + }, + "_essential_data": true + }, + "type": "Node", + "name": "new-3" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-4", + "slug": "new-4", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "new-4", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "new-4", + ":identifier": "new-4", + "xsi:type": "Node" + }, + "name": { + "_value": "new-4" + }, + "_essential_data": true + }, + "type": "Node", + "name": "new-4" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "new-5", + "slug": "new-5", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "new-5", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "new-5", + ":identifier": "new-5", + "xsi:type": "Node" + }, + "name": { + "_value": "new-5" + }, + "_essential_data": true + }, + "type": "Node", + "name": "new-5" + }, + { + "@self": { + "register": 7, + "schema": 11, + "id": "dup", + "slug": "dup", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "dup", + "section": "elements", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "dup", + ":identifier": "dup", + "xsi:type": "Second" + }, + "name": { + "_value": "dup" + }, + "_essential_data": true + }, + "type": "Second", + "name": "dup" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 20, + "saved": 19, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-01", + "slug": "rel-01", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-01", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-01", + "source": "el-01", + "target": "el-02", + ":identifier": "rel-01", + ":source": "el-01", + ":target": "el-02", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-02", + "slug": "rel-02", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-02", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-02", + "source": "el-02", + "target": "el-03", + ":identifier": "rel-02", + ":source": "el-02", + ":target": "el-03", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-03", + "slug": "rel-03", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-03", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-03", + "source": "el-03", + "target": "el-05", + ":identifier": "rel-03", + ":source": "el-03", + ":target": "el-05", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-04", + "slug": "rel-04", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-04", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-04", + "source": "el-04", + "target": "el-05", + ":identifier": "rel-04", + ":source": "el-04", + ":target": "el-05", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-05", + "slug": "rel-05", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-05", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-05", + "source": "el-05", + "target": "el-06", + ":identifier": "rel-05", + ":source": "el-05", + ":target": "el-06", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-06", + "slug": "rel-06", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-06", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-06", + "source": "el-06", + "target": "el-08", + ":identifier": "rel-06", + ":source": "el-06", + ":target": "el-08", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-07", + "slug": "rel-07", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-07", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-07", + "source": "el-07", + "target": "el-08", + ":identifier": "rel-07", + ":source": "el-07", + ":target": "el-08", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-08", + "slug": "rel-08", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-08", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-08", + "source": "el-08", + "target": "el-09", + ":identifier": "rel-08", + ":source": "el-08", + ":target": "el-09", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-09", + "slug": "rel-09", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-09", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-09", + "source": "el-09", + "target": "el-11", + ":identifier": "rel-09", + ":source": "el-09", + ":target": "el-11", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-10", + "slug": "rel-10", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-10", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-10", + "source": "el-10", + "target": "el-11", + ":identifier": "rel-10", + ":source": "el-10", + ":target": "el-11", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-11", + "slug": "rel-11", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-11", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-11", + "source": "el-11", + "target": "el-12", + ":identifier": "rel-11", + ":source": "el-11", + ":target": "el-12", + "xsi:type": "Serving" + }, + "_essential_data": true + }, + "type": "Serving" + }, + { + "@self": { + "register": 7, + "schema": 12, + "id": "rel-new", + "slug": "rel-new", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "rel-new", + "section": "relationships", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "rel-new", + "source": "x", + "target": "y", + ":identifier": "rel-new", + ":source": "x", + ":target": "y", + "xsi:type": "Access" + }, + "_essential_data": true + }, + "type": "Access" + } + ], + "register": 7, + "schema": 12, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 12, + "objectCount": 12, + "saved": 11, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 14, + "id": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "slug": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "org-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "section": "organization", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "name": "Organizations", + "xml": { + "item": { + "label": { + "_value": "Root" + }, + "item": [ + { + "_identifierRef": "el-03", + "_attributes": { + "identifierRef": "el-03", + ":identifierRef": "el-03" + }, + "___identifierRef": "el-03" + }, + { + "_identifierRef": "el-04", + "_attributes": { + "identifierRef": "el-04", + ":identifierRef": "el-04" + }, + "___identifierRef": "el-04" + }, + { + "_identifierRef": "el-05", + "_attributes": { + "identifierRef": "el-05", + ":identifierRef": "el-05" + }, + "___identifierRef": "el-05" + }, + { + "_identifierRef": "el-06", + "_attributes": { + "identifierRef": "el-06", + ":identifierRef": "el-06" + }, + "___identifierRef": "el-06" + }, + { + "_identifierRef": "el-07", + "_attributes": { + "identifierRef": "el-07", + ":identifierRef": "el-07" + }, + "___identifierRef": "el-07" + }, + { + "_identifierRef": "el-08", + "_attributes": { + "identifierRef": "el-08", + ":identifierRef": "el-08" + }, + "___identifierRef": "el-08" + }, + { + "_identifierRef": "el-09", + "_attributes": { + "identifierRef": "el-09", + ":identifierRef": "el-09" + }, + "___identifierRef": "el-09" + }, + { + "_identifierRef": "new-0", + "_attributes": { + "identifierRef": "new-0", + ":identifierRef": "new-0" + }, + "___identifierRef": "new-0" + } + ] + } + } + } + ], + "register": 7, + "schema": 14, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 14, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-2", + "slug": "view-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-2", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-2", + ":identifier": "view-2" + }, + "name": { + "_value": "View 2" + }, + "_essential_data": true + }, + "name": "View 2" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-3", + "slug": "view-3", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-3", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-3", + ":identifier": "view-3" + }, + "name": { + "_value": "View 3" + }, + "_essential_data": true + }, + "name": "View 3" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-4", + "slug": "view-4", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-4", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-4", + ":identifier": "view-4" + }, + "name": { + "_value": "View 4" + }, + "_essential_data": true + }, + "name": "View 4" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-5", + "slug": "view-5", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-5", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-5", + ":identifier": "view-5" + }, + "name": { + "_value": "View 5" + }, + "_essential_data": true + }, + "name": "View 5" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-6", + "slug": "view-6", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-6", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-6", + ":identifier": "view-6" + }, + "name": { + "_value": "View 6" + }, + "_essential_data": true + }, + "name": "View 6" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-7", + "slug": "view-7", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-7", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-7", + ":identifier": "view-7" + }, + "name": { + "_value": "View 7" + }, + "_essential_data": true + }, + "name": "View 7" + }, + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-noname", + "slug": "view-noname", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-noname", + "section": "views", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-noname", + ":identifier": "view-noname" + }, + "_essential_data": true + } + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 7, + "saved": 6, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-0", + "slug": "pd-0", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-0", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-0", + ":identifier": "pd-0" + }, + "name": { + "_value": "Renamed 0" + }, + "_essential_data": true + }, + "name": "Renamed 0" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-1", + "slug": "pd-1", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-1", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-1", + ":identifier": "pd-1" + }, + "name": { + "_value": "Prop 1" + }, + "_essential_data": true + }, + "name": "Prop 1" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-2", + "slug": "pd-2", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-2", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-2", + ":identifier": "pd-2" + }, + "name": { + "_value": "Renamed 2" + }, + "_essential_data": true + }, + "name": "Renamed 2" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-3", + "slug": "pd-3", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-3", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-3", + ":identifier": "pd-3" + }, + "name": { + "_value": "Prop 3" + }, + "_essential_data": true + }, + "name": "Prop 3" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-4", + "slug": "pd-4", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-4", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-4", + ":identifier": "pd-4" + }, + "name": { + "_value": "Renamed 4" + }, + "_essential_data": true + }, + "name": "Renamed 4" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-5", + "slug": "pd-5", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-5", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-5", + ":identifier": "pd-5" + }, + "name": { + "_value": "Prop 5" + }, + "_essential_data": true + }, + "name": "Prop 5" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-6", + "slug": "pd-6", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-6", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-6", + ":identifier": "pd-6" + }, + "name": { + "_value": "Renamed 6" + }, + "_essential_data": true + }, + "name": "Renamed 6" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-7", + "slug": "pd-7", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-7", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-7", + ":identifier": "pd-7" + }, + "name": { + "_value": "Prop 7" + }, + "_essential_data": true + }, + "name": "Prop 7" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-8", + "slug": "pd-8", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-8", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-8", + ":identifier": "pd-8" + }, + "name": { + "_value": "Renamed 8" + }, + "_essential_data": true + }, + "name": "Renamed 8" + }, + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-extra", + "slug": "pd-extra", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-extra", + "section": "property_definitions", + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-extra", + ":identifier": "pd-extra" + }, + "name": { + "_value": "Extra" + }, + "_essential_data": true + }, + "name": "Extra" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 10, + "saved": 9, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ], + [ + "log.info", + "[ArchiMate] Using lastSaveResult for statistics", + { + "saved_count": 45, + "updated_count": 6, + "unchanged_count": 0, + "invalid_count": 0, + "keys_present": [ + "saved", + "updated", + "unchanged", + "invalid", + "countsBySchema" + ] + } + ], + [ + "log.info", + "[ArchiMate] Statistics summary calculated", + { + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 51, + "total_errors": 0 + }, + "section_counts": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 51, + "errors": 0 + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + } + } + } + ], + [ + "log.info", + "ArchiMate XML import completed successfully", + { + "model_identifier": "id-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-export", + "model_exists": false, + "imported_objects": 0, + "round_trip_fidelity": "enabled" + } + ] + ] + }, + "optimized noorg.xml []": { + "result": { + "success": true, + "file_info": { + "name": "noorg.xml", + "size": 563 + }, + "performance_metrics": { + "total_time_seconds": "", + "items_per_second": "", + "objects_processed": 4, + "timing_breakdown": { + "cache_initialization_seconds": "", + "xml_parsing_seconds": "", + "memory_cleanup_seconds": "", + "model_identifier_extraction_seconds": "", + "data_transformation_seconds": "", + "database_save_seconds": "" + }, + "save_operation_breakdown": { + "total_save_seconds": "", + "service_init_seconds": "", + "gemma_processing_seconds": "", + "batch_processing_seconds": "", + "objects_saved": 4, + "save_rate_objects_per_second": "" + }, + "memory_usage": "", + "processing_rates": { + "xml_parse_objects_per_second": "", + "transform_objects_per_second": "", + "save_objects_per_second": "" + } + }, + "statistics": { + "elements": { + "created": 0, + "updated": 2, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 0, + "updated": 1, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 4, + "total_objects_deleted": 0, + "total_objects_unchanged": 0, + "total_errors": 0 + } + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "GEMMA IMPORT DEBUG: Starting optimized import", + { + "file_path": "/tests/Unit/Service/../../fixtures/archimate/noorg.xml", + "fileName": "noorg.xml" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.debug", + "Garbage collection completed", + { + "cycles_collected": "" + } + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "elements", + "relationships", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "big" + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built elements lookup for view processing", + { + "total_elements": 1, + "sample_identifiers": [ + "big" + ] + } + ], + [ + "log.info", + "Pre-built all lookups", + { + "cache_build_time": "", + "elements_count": 1, + "relationships_count": 0, + "organizations_count": 0, + "memory_usage_mb": "" + } + ], + [ + "log.debug", + "SPEED: Bulk processing elements", + { + "item_count": 1 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "SPEED: Bulk processing property_definitions", + { + "item_count": 1 + } + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Built SPEED elements lookup from raw data", + { + "total_elements": 1, + "sample_identifiers": [ + "el-00" + ] + } + ], + [ + "log.info", + "SPEED MODE: Processing views with maximum optimizations", + { + "elements_available": 1 + } + ], + [ + "log.debug", + "SPEED: Optimized element references", + { + "total_elements": 1, + "referenced_elements": 0, + "memory_savings_percent": "" + } + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.info", + "Memory cleanup before database operations", + { + "memory_freed_mb": "", + "gc_cycles_collected": "", + "memory_before_mb": "", + "memory_after_mb": "" + } + ], + [ + "log.info", + "GEMMA IMPORT DEBUG: About to save objects to database", + { + "object_count": 4 + } + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 4, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.debug", + "GEMMA Type property found", + { + "property_name": "type", + "value": "Role", + "object_id": "el-00" + } + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 1, + "elements_with_gemma_type": 1, + "gemma_type_variations": { + "Role": 1 + }, + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 4, + "schemas": { + "10": 1, + "11": 1, + "15": 1, + "13": 1 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "big", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "big", + "section": "model", + "model_identifier": "big", + "xml": { + "name": "", + "documentation": "", + "properties": [], + "propertyDefinitionMap": { + "pd-0": "Prop 0" + } + }, + "name": "", + "documentation": "", + "properties": [], + "propertyDefinitionMap": { + "pd-0": "Prop 0" + }, + ":identifier": "big" + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-00", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "el-00" + }, + "identifier": "el-00", + "section": "element", + "model_identifier": "big", + "xml": { + "_attributes": { + "identifier": "el-00", + ":identifier": "el-00", + "xsi:type": "Role" + }, + "name": { + "_value": "el-00" + }, + "_essential_data": true + }, + "name": "el-00", + "type": "Role" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-0", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "pd-0" + }, + "identifier": "pd-0", + "section": "property_definition", + "model_identifier": "big", + "xml": { + "_attributes": { + "identifier": "pd-0", + ":identifier": "pd-0" + }, + "name": { + "_value": "Prop 0" + }, + "_essential_data": true + }, + "name": "Prop 0" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-0", + "owner": "importer", + "organisation": "org-default", + "published": "", + "slug": "view-0" + }, + "identifier": "view-0", + "section": "view", + "model_identifier": "big", + "xml": { + "_attributes": { + "identifier": "view-0", + ":identifier": "view-0" + }, + "name": { + "_value": "View 0" + }, + "_essential_data": true + }, + "name": "View 0" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ] + ] + }, + "classic noorg.xml []": { + "result": { + "success": true, + "file_info": { + "name": "noorg.xml", + "size": 563, + "mime_type": "text/xml" + }, + "processing_times": "", + "memory_usage": "", + "statistics": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 4, + "errors": [] + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": [] + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 4, + "total_errors": 0 + } + }, + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 4, + "total_errors": 0 + }, + "performance_metrics": { + "items_per_second": "", + "processing_method": "synchronous_batch_processing", + "batch_size_used": 100, + "dataset_size": 0 + }, + "detailed_errors": { + "total_count": 0, + "by_section": [], + "omschrijving": [] + } + }, + "calls": [ + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Step 1: Parsing XML to array for complete data capture", + { + "filePath": "/tests/Unit/Service/../../fixtures/archimate/noorg.xml" + } + ], + [ + "log.info", + "Step 2: Extracting model identifier and checking for existing model", + [] + ], + [ + "log.debug", + "Extracting model identifier from XML data", + { + "xml_keys": [ + "_identifier", + "_attributes", + "___identifier", + "elements", + "relationships", + "propertyDefinitions", + "views" + ] + } + ], + [ + "log.info", + "Found model identifier in root attributes", + { + "identifier": "big" + } + ], + [ + "log.debug", + "Checking if model already exists", + { + "model_identifier": "big" + } + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "log.info", + "Getting AMEF configuration", + [] + ], + [ + "objects.searchObjects", + { + "@self": { + "register": 7, + "schema": 10 + }, + "archimate_id": "big", + "_limit": 1 + } + ], + [ + "log.info", + "Model existence check completed", + { + "model_identifier": "big", + "exists": false, + "found_count": 0, + "registerId": 7, + "schemaId": 10 + } + ], + [ + "log.info", + "Step 3: Normalizing data structure for JSON blob storage", + [] + ], + [ + "log.info", + "Normalizing ArchiMate data structure for JSON blob storage", + { + "model_identifier": "big" + } + ], + [ + "log.info", + "Property definitions extracted and mapped", + { + "total_properties": 1, + "property_mapping": { + "Prop 0": "prop0" + } + } + ], + [ + "log.debug", + "Extracted model metadata", + { + "metadata_keys": [ + "identifier", + ":identifier", + "propertyDefinitionMap" + ], + "has_name": false, + "has_documentation": false + } + ], + [ + "log.info", + "Data normalization completed", + { + "model_identifier": "big", + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ], + "round_trip_fidelity": "enabled" + } + ], + [ + "log.info", + "Step 4: Converting to OpenRegister objects with @self structure", + [] + ], + [ + "log.info", + "Converting to OpenRegister objects with @self structure", + { + "model_identifier": "big" + } + ], + [ + "log.debug", + "Creating model object from metadata", + [] + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "element" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "view" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "settings.getSchemaIdForObjectType", + "property_definition" + ], + [ + "log.info", + "Getting default organisation from OrganisationService", + [] + ], + [ + "log.info", + "Got default organisation UUID: org-default", + [] + ], + [ + "log.debug", + "Sections processed", + { + "elements": 1, + "relationships": 0, + "organizations": 0, + "views": 1, + "property_definitions": 1 + } + ], + [ + "log.info", + "Conversion to OpenRegister objects completed", + { + "model_identifier": "big", + "total_objects": 4, + "sections_processed": [ + "elements", + "relationships", + "organizations", + "views", + "property_definitions" + ] + } + ], + [ + "log.info", + "Step 5: Saving objects to database using ObjectService::saveObjects", + [] + ], + [ + "log.debug", + "Objects before save", + { + "total_objects_to_save": 4, + "elements_with_gemmaType": 0 + } + ], + [ + "log.info", + "Processing GEMMA Referentiecomponent-Standaard and StandaardVersie relationships", + [] + ], + [ + "log.info", + "GEMMA objects processing complete", + { + "total_elements": 0, + "elements_with_gemma_type": 0, + "gemma_type_variations": [], + "referentiecomponenten_count": 0, + "standaarden_count": 0, + "standaardversies_count": 0, + "processed_relationships": 0, + "standaardversie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA Referentiecomponent-Standaard processing completed", + { + "referentiecomponenten_enhanced": 0, + "total_referentiecomponenten": 0, + "total_relationships_processed": 0 + } + ], + [ + "log.info", + "GEMMA StandaardVersie-Standaard processing completed", + { + "standaardversies_enhanced": 0, + "total_standaardversies": 0, + "total_versie_relationships": 0 + } + ], + [ + "log.info", + "GEMMA ReferentieComponent-StandaardVersies processing completed", + { + "referentiecomponenten_with_versies": 0, + "total_referentiecomponenten": 0, + "standaard_to_versies_mappings": 0 + } + ], + [ + "log.info", + "ArchiMate import: Grouped objects by schema for magic mapping", + { + "schemaCount": 4, + "schemas": { + "10": 1, + "11": 1, + "13": 1, + "15": 1 + } + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 10, + "id": "big", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "big", + "section": "model", + "model_identifier": "big", + "xml": { + "propertyDefinitionMap": { + "pd-0": "Prop 0" + } + }, + ":identifier": "big", + "propertyDefinitionMap": { + "pd-0": "Prop 0" + } + } + ], + "register": 7, + "schema": 10, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 10, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 11, + "id": "el-00", + "slug": "el-00", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "el-00", + "section": "elements", + "model_identifier": "big", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "el-00", + ":identifier": "el-00", + "xsi:type": "Role" + }, + "name": { + "_value": "el-00" + }, + "_essential_data": true + }, + "type": "Role", + "name": "el-00" + } + ], + "register": 7, + "schema": 11, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 11, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 13, + "id": "view-0", + "slug": "view-0", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "view-0", + "section": "views", + "model_identifier": "big", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "view-0", + ":identifier": "view-0" + }, + "name": { + "_value": "View 0" + }, + "_essential_data": true + }, + "name": "View 0" + } + ], + "register": 7, + "schema": 13, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 13, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "objects.saveObjects", + { + "objects": [ + { + "@self": { + "register": 7, + "schema": 15, + "id": "pd-0", + "slug": "pd-0", + "owner": "importer", + "organisation": "org-default", + "published": "" + }, + "identifier": "pd-0", + "section": "property_definitions", + "model_identifier": "big", + "extracted_at": "", + "xml": { + "_attributes": { + "identifier": "pd-0", + ":identifier": "pd-0" + }, + "name": { + "_value": "Prop 0" + }, + "_essential_data": true + }, + "name": "Prop 0" + } + ], + "register": 7, + "schema": 15, + "_rbac": false, + "_multitenancy": false, + "validation": false, + "events": false + } + ], + [ + "log.debug", + "Schema group saved for magic mapping", + { + "schemaId": 15, + "objectCount": 1, + "saved": 0, + "updated": 1 + } + ], + [ + "db.executeQuery", + "SELECT _uuid, identifier FROM oc_openregister_table_7_11 WHERE gemma_type = 'Standaard' AND identifier IS NOT NULL" + ], + [ + "log.info", + "fixStandaardVersieUuids: Built identifier->uuid mapping", + { + "standaard_count": 0 + } + ], + [ + "log.warning", + "fixStandaardVersieUuids: No Standaarden found to map", + [] + ], + [ + "log.info", + "[ArchiMate] Using lastSaveResult for statistics", + { + "saved_count": 0, + "updated_count": 4, + "unchanged_count": 0, + "invalid_count": 0, + "keys_present": [ + "saved", + "updated", + "unchanged", + "invalid", + "countsBySchema" + ] + } + ], + [ + "log.info", + "[ArchiMate] Statistics summary calculated", + { + "omschrijving": { + "total_objects_created": 0, + "total_objects_updated": 0, + "total_objects_deleted": 0, + "total_objects_unchanged": 4, + "total_errors": 0 + }, + "section_counts": { + "elements": { + "created": 0, + "updated": 0, + "unchanged": 4, + "errors": 0 + }, + "organizations": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "relationships": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "views": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + }, + "property_definitions": { + "created": 0, + "updated": 0, + "unchanged": 0, + "errors": 0 + } + } + } + ], + [ + "log.info", + "ArchiMate XML import completed successfully", + { + "model_identifier": "big", + "model_exists": false, + "imported_objects": 0, + "round_trip_fidelity": "enabled" + } + ] + ] + } +} diff --git a/tests/data/archimate_golden.xml b/tests/data/archimate_golden.xml new file mode 100644 index 000000000..c63324c1b --- /dev/null +++ b/tests/data/archimate_golden.xml @@ -0,0 +1,144 @@ + + + Golden model + Model used to pin the import output + + + Model unit + + + + + Zaaksysteem + Handles cases + + + uuid-el-1 + + + Backoffice + + + Referentiecomponent + + + Unknown definition + + + No definition ref + + + + + + Zaakgericht werken + + + single + + + + + + + + + Zaakdossier + + + uuid-el-4 + + + + + Standaard groep + + + Gemma waarde + + + Second unit + + + + + + + serves + Serving relation + + + uuid-rel-1 + + + + + + + + + + + + + + + + + + + + + + Object ID + + + Business Unit + + + Referentie soort + + + Remark + + + Gemma Online URL + + + + + + Overview + Main view + + + View unit + + + + + + + + + + + + + + + + + Empty view + + + +