diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b2de1e..cd58faa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,11 @@ See [keep a changelog] for information about writing changes to this log. ## [Unreleased] +* [PR-38](https://github.com/itk-dev/sysstatus/pull/38) + * Update importers + * Add example data + * Add fixtures + ## [3.0.3] - 2025-07-29 * [PR-37](https://github.com/itk-dev/sysstatus/pull/37) diff --git a/README.md b/README.md index 12108a8..5ded34d 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,12 @@ docker compose exec phpfpm bin/console itstyr:import:system docker compose exec phpfpm bin/console itstyr:import:report ``` +## Apply fixtures + +```shell +docker compose exec phpfpm bin/console doctrine:fixtures:load --group=imported_data --purge-exclusions=user +``` + ### Flowchart A helpful flowchart over the Entities, and Joinedtables. diff --git a/composer.json b/composer.json index 2eddabd..800c827 100644 --- a/composer.json +++ b/composer.json @@ -33,6 +33,7 @@ "twig/twig": "^2.12 || ^3.20" }, "require-dev": { + "doctrine/doctrine-fixtures-bundle": "^4.1", "ergebnis/composer-normalize": "^2.45", "friendsofphp/php-cs-fixer": "^3.73.1", "phpstan/extension-installer": "^1.4.3", diff --git a/composer.lock b/composer.lock index 9b3f621..febef4d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "411b1ccd04eb8380ea851afbfb884e54", + "content-hash": "e98956050deac3972697b39614ea2207", "packages": [ { "name": "behat/transliterator", @@ -8049,6 +8049,175 @@ ], "time": "2024-05-06T16:37:16+00:00" }, + { + "name": "doctrine/data-fixtures", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "f161e20f04ba5440a09330e156b40f04dd70d47f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f161e20f04ba5440a09330e156b40f04dd70d47f", + "reference": "f161e20f04ba5440a09330e156b40f04dd70d47f", + "shasum": "" + }, + "require": { + "doctrine/persistence": "^3.1 || ^4.0", + "php": "^8.1", + "psr/log": "^1.1 || ^2 || ^3" + }, + "conflict": { + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", + "doctrine/phpcr-odm": "<1.3.0" + }, + "require-dev": { + "doctrine/coding-standard": "^13", + "doctrine/dbal": "^3.5 || ^4", + "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", + "doctrine/orm": "^2.14 || ^3", + "ext-sqlite3": "*", + "fig/log-test": "^1", + "phpstan/phpstan": "2.1.17", + "phpunit/phpunit": "10.5.45", + "symfony/cache": "^6.4 || ^7", + "symfony/var-exporter": "^6.4 || ^7" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\DataFixtures\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "database" + ], + "support": { + "issues": "https://github.com/doctrine/data-fixtures/issues", + "source": "https://github.com/doctrine/data-fixtures/tree/2.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdata-fixtures", + "type": "tidelift" + } + ], + "time": "2025-07-08T17:48:20+00:00" + }, + { + "name": "doctrine/doctrine-fixtures-bundle", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", + "reference": "a06db6b81ff20a2980bf92063d80c013bb8b4b7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/a06db6b81ff20a2980bf92063d80c013bb8b4b7c", + "reference": "a06db6b81ff20a2980bf92063d80c013bb8b4b7c", + "shasum": "" + }, + "require": { + "doctrine/data-fixtures": "^2.0", + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4 || ^3.0 || ^4.0", + "php": "^8.1", + "psr/log": "^2 || ^3", + "symfony/config": "^6.4 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^6.4.16 || ^7.1.9", + "symfony/http-kernel": "^6.4 || ^7.0" + }, + "conflict": { + "doctrine/dbal": "< 3" + }, + "require-dev": { + "doctrine/coding-standard": "13.0.0", + "phpstan/phpstan": "2.1.11", + "phpunit/phpunit": "^10.5.38 || 11.4.14" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\FixturesBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DoctrineFixturesBundle", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "Fixture", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-fixtures-bundle", + "type": "tidelift" + } + ], + "time": "2025-03-26T10:56:26+00:00" + }, { "name": "ergebnis/composer-normalize", "version": "2.47.0", diff --git a/config/bundles.php b/config/bundles.php index 3c7fe0d..381a1f8 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -15,4 +15,5 @@ Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], Symfony\UX\TwigComponent\TwigComponentBundle::class => ['all' => true], Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], ]; diff --git a/config/services.yaml b/config/services.yaml index 358224c..9f5526d 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -4,7 +4,7 @@ # Put parameters here that don't need to change on each machine where the app is deployed # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration parameters: - + system_url: "%env(SYSTEM_URL)%" services: # default configuration for services in *this* file _defaults: diff --git a/src/Controller/Admin/ReportCrudController.php b/src/Controller/Admin/ReportCrudController.php index 4a65866..e01b462 100644 --- a/src/Controller/Admin/ReportCrudController.php +++ b/src/Controller/Admin/ReportCrudController.php @@ -41,11 +41,11 @@ public function configureFields(string $pageName): iterable case Crud::PAGE_INDEX: // Cf. https://github.com/itk-dev/sysstatus/blob/5383a3a566ce316c338441ed826ecf3fdcf98815/src/Controller/AdminController.php#L263-L288 yield IdField::new('id')->setLabel('entity.report.sys_id'); - yield TextField::new('sysTitle')->setLabel('entity.report.sys_title'); + yield TextField::new('sysTitle')->setLabel('entity.report.sys_title')->renderAsHtml(); yield CollectionField::new('groups')->setLabel('entity.report.groups') ->renderExpanded(); - yield TextField::new('sysOwnerSub')->setLabel('entity.report.sys_owner_sub'); - yield TextField::new('sysSystemOwner')->setLabel('entity.report.sys_system_owner'); + yield TextField::new('sysOwnerSub')->setLabel('entity.report.sys_owner_sub')->renderAsHtml(); + yield TextField::new('sysSystemOwner')->setLabel('entity.report.sys_system_owner')->renderAsHtml(); yield UrlField::new('sysLink')->setLabel('entity.report.sys_link') ->formatValue(static fn ($value) => new TranslatableMessage('Link')); yield BooleanField::new('textSet')->setLabel('entity.report.text') @@ -56,52 +56,52 @@ public function configureFields(string $pageName): iterable case Crud::PAGE_DETAIL: // Cf. https://github.com/itk-dev/sysstatus/blob/5383a3a566ce316c338441ed826ecf3fdcf98815/config/packages/easy_admin.yaml#L100-L143 - yield TextField::new('sysTitle')->setLabel('entity.report.sys_title'); + yield TextField::new('sysTitle')->setLabel('entity.report.sys_title')->renderAsHtml(); yield IdField::new('sysInternalId')->setLabel('entity.report.sys_internal_id'); yield UrlField::new('eDocUrl')->setLabel('entity.report.edoc_url'); yield UrlField::new('sysLink')->setLabel('entity.report.sys_link'); - yield TextField::new('name')->setLabel('entity.report.name'); + yield TextField::new('name')->setLabel('entity.report.name')->renderAsHtml(); yield TextEditorField::new('text')->setLabel('entity.report.text') // Show raw value ->setTemplatePath('admin/text_editor.raw.html.twig'); - yield TextField::new('sysSystemOwner')->setLabel('entity.report.sys_system_owner'); + yield TextField::new('sysSystemOwner')->setLabel('entity.report.sys_system_owner')->renderAsHtml(); // @todo Add links to each group? yield CollectionField::new('groups')->setLabel('entity.report.groups'); yield CollectionField::new('answerArea')->setLabel('entity.report.answers') ->setTemplatePath('easy_admin_overrides/answers_show.html.twig'); - yield TextField::new('sysAlternativeTitle')->setLabel('entity.report.sys_alternative_title'); + yield TextField::new('sysAlternativeTitle')->setLabel('entity.report.sys_alternative_title')->renderAsHtml(); yield DateTimeField::new('sysUpdated')->setLabel('entity.report.sys_updated'); - yield TextField::new('sysOwner')->setLabel('entity.report.sys_owner'); + yield TextField::new('sysOwner')->setLabel('entity.report.sys_owner')->renderAsHtml(); yield BooleanField::new('sysConfidentialInformation')->setLabel('entity.report.sys_confidential_information'); - yield TextField::new('sysPurpose')->setLabel('entity.report.sys_purpose'); - yield TextField::new('sysClassification')->setLabel('entity.report.sys_classification'); + yield TextField::new('sysPurpose')->setLabel('entity.report.sys_purpose')->renderAsHtml(); + yield TextField::new('sysClassification')->setLabel('entity.report.sys_classification')->renderAsHtml(); yield DateTimeField::new('sysDateForRevision')->setLabel('entity.report.sys_date_for_revision'); - yield TextField::new('sysPersons')->setLabel('entity.report.sys_persons'); - yield TextField::new('sysInformationTypes')->setLabel('entity.report.sys_information_types'); - yield TextField::new('sysDataSentTo')->setLabel('entity.report.sys_data_sent_to'); - yield TextField::new('sysDataComeFrom')->setLabel('entity.report.sys_data_come_from'); - yield TextField::new('sysDataLocation')->setLabel('entity.report.sys_data_location'); - yield TextField::new('sysLatestDeletionDate')->setLabel('entity.report.sys_latest_deletion_date'); - yield TextField::new('sysDataWorthSaving')->setLabel('entity.report.sys_data_worth_saving'); - yield TextField::new('sysDataProcessors')->setLabel('entity.report.sys_data_processors'); - yield TextField::new('sysDataProcessingAgreement')->setLabel('entity.report.sys_data_processing_agreement'); - yield TextField::new('sysDataProcessingAgreementLink')->setLabel('entity.report.sys_data_processing_agreement_link'); - yield TextField::new('sysAuditorStatement')->setLabel('entity.report.sys_auditor_statement'); - yield TextField::new('sysAuditorStatementLink')->setLabel('entity.report.sys_auditor_statement_link'); - yield TextField::new('sysDataToScience')->setLabel('entity.report.sys_data_to_science'); - yield TextField::new('sysUsage')->setLabel('entity.report.sys_usage'); - yield TextField::new('sysRequestForInsight')->setLabel('entity.report.sys_request_for_insight'); + yield TextField::new('sysPersons')->setLabel('entity.report.sys_persons')->renderAsHtml(); + yield TextField::new('sysInformationTypes')->setLabel('entity.report.sys_information_types')->renderAsHtml(); + yield TextField::new('sysDataSentTo')->setLabel('entity.report.sys_data_sent_to')->renderAsHtml(); + yield TextField::new('sysDataComeFrom')->setLabel('entity.report.sys_data_come_from')->renderAsHtml(); + yield TextField::new('sysDataLocation')->setLabel('entity.report.sys_data_location')->renderAsHtml(); + yield TextField::new('sysLatestDeletionDate')->setLabel('entity.report.sys_latest_deletion_date')->renderAsHtml(); + yield TextField::new('sysDataWorthSaving')->setLabel('entity.report.sys_data_worth_saving')->renderAsHtml(); + yield TextField::new('sysDataProcessors')->setLabel('entity.report.sys_data_processors')->renderAsHtml(); + yield TextField::new('sysDataProcessingAgreement')->setLabel('entity.report.sys_data_processing_agreement')->renderAsHtml(); + yield TextField::new('sysDataProcessingAgreementLink')->setLabel('entity.report.sys_data_processing_agreement_link')->renderAsHtml(); + yield TextField::new('sysAuditorStatement')->setLabel('entity.report.sys_auditor_statement')->renderAsHtml(); + yield TextField::new('sysAuditorStatementLink')->setLabel('entity.report.sys_auditor_statement_link')->renderAsHtml(); + yield TextField::new('sysDataToScience')->setLabel('entity.report.sys_data_to_science')->renderAsHtml(); + yield TextField::new('sysUsage')->setLabel('entity.report.sys_usage')->renderAsHtml(); + yield TextField::new('sysRequestForInsight')->setLabel('entity.report.sys_request_for_insight')->renderAsHtml(); yield DateTimeField::new('sysDateUse')->setLabel('entity.report.sys_date_use'); - yield TextField::new('sysStatus')->setLabel('entity.report.sys_status'); - yield TextField::new('sysRemarks')->setLabel('entity.report.sys_remarks'); - yield TextField::new('sysInternalInformation')->setLabel('entity.report.sys_internal_information'); - yield TextField::new('sysObligationToInform')->setLabel('entity.report.sys_obligation_to_inform'); - yield TextField::new('sysLegalBasis')->setLabel('entity.report.sys_legal_basis'); - yield TextField::new('sysConsent')->setLabel('entity.report.sys_consent'); - yield TextField::new('sysImpactAnalysis')->setLabel('entity.report.sys_impact_analysis'); - yield TextField::new('sysImpactAnalysisLink')->setLabel('entity.report.sys_impact_analysis_link'); - yield TextField::new('sysAuthorizationProcedure')->setLabel('entity.report.sys_authorization_procedure'); - yield TextField::new('sysVersion')->setLabel('entity.report.sys_version'); + yield TextField::new('sysStatus')->setLabel('entity.report.sys_status')->renderAsHtml(); + yield TextField::new('sysRemarks')->setLabel('entity.report.sys_remarks')->renderAsHtml(); + yield TextField::new('sysInternalInformation')->setLabel('entity.report.sys_internal_information')->renderAsHtml(); + yield TextField::new('sysObligationToInform')->setLabel('entity.report.sys_obligation_to_inform')->renderAsHtml(); + yield TextField::new('sysLegalBasis')->setLabel('entity.report.sys_legal_basis')->renderAsHtml(); + yield TextField::new('sysConsent')->setLabel('entity.report.sys_consent')->renderAsHtml(); + yield TextField::new('sysImpactAnalysis')->setLabel('entity.report.sys_impact_analysis')->renderAsHtml(); + yield TextField::new('sysImpactAnalysisLink')->setLabel('entity.report.sys_impact_analysis_link')->renderAsHtml(); + yield TextField::new('sysAuthorizationProcedure')->setLabel('entity.report.sys_authorization_procedure')->renderAsHtml(); + yield TextField::new('sysVersion')->setLabel('entity.report.sys_version')->renderAsHtml(); return; diff --git a/src/Controller/Admin/SystemCrudController.php b/src/Controller/Admin/SystemCrudController.php index a30f9ad..fde1498 100644 --- a/src/Controller/Admin/SystemCrudController.php +++ b/src/Controller/Admin/SystemCrudController.php @@ -39,41 +39,41 @@ public function configureActions(Actions $actions): Actions public function configureFields(string $pageName): iterable { $id = IdField::new('id')->setLabel('entity.system.id'); - $text = TextField::new('text')->setLabel('entity.system.text'); + $text = TextField::new('text')->setLabel('entity.system.text')->renderAsHtml(); $text_editor = TextareaField::new('text')->setLabel('entity.system.text'); $name = TextField::new('name')->setLabel('entity.system.name'); - $sys_title = TextField::new('sys_title')->setDisabled(true)->setLabel('entity.system.sys_title'); - $sys_owner = TextField::new('sys_owner_sub')->setLabel('entity.system.sys_owner_sub'); - $sys_system_owner = TextField::new('sys_system_owner')->setLabel('entity.system.sys_system_owner'); + $sys_title = TextField::new('sys_title')->setDisabled(true)->setLabel('entity.system.sys_title')->renderAsHtml(); + $sys_owner = TextField::new('sys_owner_sub')->setLabel('entity.system.sys_owner_sub')->renderAsHtml(); + $sys_system_owner = TextField::new('sys_system_owner')->setLabel('entity.system.sys_system_owner')->renderAsHtml(); $sys_link = UrlField::new('sys_link')->setLabel('entity.system.sys_link'); $sys_self_service_url = AssociationField::new('selfServiceAvailableFromItems')->setLabel('entity.system.selfServiceAvailableFromItems'); - $edoc_url = TextField::new('edoc_url')->setLabel('entity.system.edoc_url'); + $edoc_url = TextField::new('edoc_url')->setLabel('entity.system.edoc_url')->renderAsHtml(); $groups = AssociationField::new('groups')->setLabel('entity.system.groups'); $answerarea = CollectionField::new('answerarea')->setTemplatePath('easy_admin_overrides/answers_show.html.twig')->setLabel('Smileys'); $sys_updated = DateField::new('sys_updated')->setLabel('entity.system.sys_updated'); - $sys_description = TextField::new('sys_description')->setLabel('entity.system.sys_description'); - $sys_owner_subdepartment = TextField::new('sys_owner_subdepartment')->setLabel('entity.system.sys_owner_subdepartment'); - $sys_emergency_setup = TextField::new('sys_emergency_setup')->setLabel('entity.system.sys_emergency_setup'); - $sys_contractor = TextField::new('sys_contractor')->setLabel('entity.system.sys_contractor'); - $sys_urgency_rating = TextField::new('sys_urgency_rating')->setLabel('entity.system.sys_urgency_rating'); - $sys_number_of_users = TextField::new('sys_number_of_users')->setLabel('entity.system.sys_number_of_users'); - $sys_technical_documentation = TextField::new('sys_technical_documentation')->setLabel('entity.system.sys_technical_documentation'); - $sys_external_dependencies = TextField::new('sys_external_dependencies')->setLabel('entity.system.sys_external_dependencies'); - $sys_important_information = TextField::new('sys_important_information')->setLabel('entity.system.sys_important_information'); - $sys_superuser_organization = TextField::new('sys_superuser_organization')->setLabel('entity.system.sys_superuser_organization'); - $sys_itsecurity_category = TextField::new('sys_itsecurity_category')->setLabel('entity.system.sys_itsecurity_category'); - $sys_link_to_security_review = TextField::new('sys_link_to_security_review')->setLabel('entity.system.sys_link_to_security_review'); - $sys_link_to_contract = TextField::new('sys_link_to_contract')->setLabel('entity.system.sys_link_to_contract'); + $sys_description = TextField::new('sys_description')->setLabel('entity.system.sys_description')->renderAsHtml(); + $sys_owner_subdepartment = TextField::new('sys_owner_subdepartment')->setLabel('entity.system.sys_owner_subdepartment')->renderAsHtml(); + $sys_emergency_setup = TextField::new('sys_emergency_setup')->setLabel('entity.system.sys_emergency_setup')->renderAsHtml(); + $sys_contractor = TextField::new('sys_contractor')->setLabel('entity.system.sys_contractor')->renderAsHtml(); + $sys_urgency_rating = TextField::new('sys_urgency_rating')->setLabel('entity.system.sys_urgency_rating')->renderAsHtml(); + $sys_number_of_users = TextField::new('sys_number_of_users')->setLabel('entity.system.sys_number_of_users')->renderAsHtml(); + $sys_technical_documentation = TextField::new('sys_technical_documentation')->setLabel('entity.system.sys_technical_documentation')->renderAsHtml(); + $sys_external_dependencies = TextField::new('sys_external_dependencies')->setLabel('entity.system.sys_external_dependencies')->renderAsHtml(); + $sys_important_information = TextField::new('sys_important_information')->setLabel('entity.system.sys_important_information')->renderAsHtml(); + $sys_superuser_organization = TextField::new('sys_superuser_organization')->setLabel('entity.system.sys_superuser_organization')->renderAsHtml(); + $sys_itsecurity_category = TextField::new('sys_itsecurity_category')->setLabel('entity.system.sys_itsecurity_category')->renderAsHtml(); + $sys_link_to_security_review = TextField::new('sys_link_to_security_review')->setLabel('entity.system.sys_link_to_security_review')->renderAsHtml(); + $sys_link_to_contract = TextField::new('sys_link_to_contract')->setLabel('entity.system.sys_link_to_contract')->renderAsHtml(); $sys_end_of_contract = DateField::new('sys_end_of_contract')->setLabel('entity.system.sys_end_of_contract'); - $sys_status = TextField::new('sys_status')->setLabel('entity.system.sys_status'); - $sys_open_data = TextField::new('sys_open_data')->setLabel('entity.system.sys_open_data'); - $sys_open_source = TextField::new('sys_open_source')->setLabel('entity.system.sys_open_source'); - $sys_digital_post = TextField::new('sys_digital_post')->setLabel('entity.system.sys_system_category'); - $sys_digital_transactions_pr_year = TextField::new('sys_digital_transactions_pr_year')->setLabel('entity.system.sys_digital_transactions_pr_year'); - $sys_total_transactions_pr_year = TextField::new('sys_total_transactions_pr_year')->setLabel('entity.system.sys_total_transactions_pr_year'); + $sys_status = TextField::new('sys_status')->setLabel('entity.system.sys_status')->renderAsHtml(); + $sys_open_data = TextField::new('sys_open_data')->setLabel('entity.system.sys_open_data')->renderAsHtml(); + $sys_open_source = TextField::new('sys_open_source')->setLabel('entity.system.sys_open_source')->renderAsHtml(); + $sys_digital_post = TextField::new('sys_digital_post')->setLabel('entity.system.sys_system_category')->renderAsHtml(); + $sys_digital_transactions_pr_year = TextField::new('sys_digital_transactions_pr_year')->setLabel('entity.system.sys_digital_transactions_pr_year')->renderAsHtml(); + $sys_total_transactions_pr_year = TextField::new('sys_total_transactions_pr_year')->setLabel('entity.system.sys_total_transactions_pr_year')->renderAsHtml(); // $selfServiceAvailableFromItems = TextField::new('selfServiceAvailableFromItems')->setLabel('entity.system.selfServiceAvailableFromItems'); - $sys_alternative_title = TextField::new('sys_alternative_title')->setLabel('sys_alternative_title'); - $sys_version = TextField::new('sys_version')->setLabel('sys_version'); + $sys_alternative_title = TextField::new('sys_alternative_title')->setLabel('sys_alternative_title')->renderAsHtml(); + $sys_version = TextField::new('sys_version')->setLabel('sys_version')->renderAsHtml(); // $coll_question = CollectionField::new('questions')->setEntryType('App\Form\CategoryType'); diff --git a/src/DataFixtures/ReportFixtures.php b/src/DataFixtures/ReportFixtures.php new file mode 100644 index 0000000..2119c51 --- /dev/null +++ b/src/DataFixtures/ReportFixtures.php @@ -0,0 +1,25 @@ +reportImporter->import(__DIR__.'/example_data/reports.json'); + } + + public static function getGroups(): array + { + return ['imported_data']; + } +} diff --git a/src/DataFixtures/SystemFixtures.php b/src/DataFixtures/SystemFixtures.php new file mode 100644 index 0000000..380e799 --- /dev/null +++ b/src/DataFixtures/SystemFixtures.php @@ -0,0 +1,25 @@ +systemImporter->import(__DIR__.'/example_data/systems.json'); + } + + public static function getGroups(): array + { + return ['imported_data']; + } +} diff --git a/src/DataFixtures/example_data/reports.json b/src/DataFixtures/example_data/reports.json new file mode 100644 index 0000000..fc52f1f --- /dev/null +++ b/src/DataFixtures/example_data/reports.json @@ -0,0 +1,1752 @@ +[ + { + "ContentTypeId": { + "StringValue": "0002", + "TypeId": "{abc123}" + }, + "Title": "USS Enterprise Database", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "BA-Starfleet Command", + "Fortrolige_x0020_oplysninger": "Ja", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Tracking of all Federation starships and div personnel
", + "Systemejer2": [ + { + "Email": "picard@starfleet.fed", + "TypeId": "{def456}", + "LookupId": 4, + "LookupValue": "Jean-Luc Picard" + } + ], + "Systemets_x0020_klassifikation_x": "Level 1", + "Dato_x0020_for_x0020_revision": "2025-03-15T14:30:00Z", + "Personkreds": "
Starfleet officers and div personnel
", + "Oplysningstyper": "
Personnel records and ship div specifications
", + "Interne_x0020_systemafh_x00e6_ng": "
Integration with Federation HQ div systems
", + "Eksterne_x0020_systemafh_x00e6_n": "
Communication with allied div species systems
", + "Placering_x0020_af_x0020_data": "
Data stored on Earth and div Vulcan servers
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
After officer retirement plus 100 div years
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
Starfleet Data Processing div Center
", + "Er_x0020_der_x0020_indg_x00e5_et": "Ja", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Completed", + "Link_x0020_til_x0020_revisorerkl": "
Link to Admiral audit div report
", + "Systembrug": "
Crew assignments and mission div planning
", + "Anmodning_x0020_om_x0020_indsigt": "
Requests handled by Commander div Data
", + "Ibrugtagning": "2025-01-10T10:00:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
Encrypted with quantum div encryption
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Nej" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Ja", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 1, + "Modified": "2025-04-15T11:42:30Z", + "Created": "2025-01-05T08:15:20Z", + "Author": { + "Email": "riker@starfleet.fed", + "TypeId": "{ghi789}", + "LookupId": 5, + "LookupValue": "William Riker" + }, + "Editor": { + "Email": "data@starfleet.fed", + "TypeId": "{jkl012}", + "LookupId": 8, + "LookupValue": "Data" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 12, + "WorkflowVersion": 1, + "_UIVersion": 5120, + "_UIVersionString": "10.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 110.0, + "GUID": "{mno345pqr678}", + "WorkflowInstanceID": null, + "FileRef": "/.001", + "FileDirRef": "/lorem", + "Last_x0020_Modified": "2025-04-15T11:42:30Z", + "Created_x0020_Date": "2025-01-05T08:15:20Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 2, + "LookupValue": "0", + "TypeId": "{stu901}" + }, + "FileLeafRef": "1_.001", + "UniqueId": "{vwx234yz567}", + "ParentUniqueId": "{abc890}", + "SyncClientId": { + "LookupId": 3, + "LookupValue": null, + "TypeId": "{def123}" + }, + "ProgId": "Enterprise", + "ScopeId": "{ghi456}", + "MetaInfo": "NCC-1701-D", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "Yes", + "OriginatorId": "{jkl789}", + "NoExecute": "0", + "ContentVersion": "1", + "_ComplianceFlags": "Standard", + "_ComplianceTag": "Retain100Years", + "_ComplianceTagWrittenTime": "2025-01-05T08:15:20Z", + "_ComplianceTagUserId": "starfleet", + "AccessPolicy": "Restricted", + "_VirusStatus": "Clean", + "_VirusVendorID": "AV1", + "_VirusInfo": "Scanned", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Picard", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 50200, + "LookupValue": "25MB", + "TypeId": "{mno012}" + }, + "SMLastModifiedDate": "2025-04-15T11:42:30Z", + "SMTotalFileStreamSize": "4096", + "SMTotalFileCount": { + "LookupId": 12, + "LookupValue": "12", + "TypeId": "{pqr345}" + }, + "_CommentFlags": "Enabled", + "_CommentCount": "3" + }, + { + "ContentTypeId": { + "StringValue": "0003", + "TypeId": "{stu678}" + }, + "Title": "Death Star Plans Repository", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "MSB-Imperial Engineering", + "Fortrolige_x0020_oplysninger": "Ja", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Storage of Death Star schematics and div blueprints
", + "Systemejer2": [ + { + "Email": "tarkin@empire.gov", + "TypeId": "{vwx901}", + "LookupId": 7, + "LookupValue": "Grand Moff Tarkin" + } + ], + "Systemets_x0020_klassifikation_x": "Level 5", + "Dato_x0020_for_x0020_revision": "2025-09-22T09:00:00Z", + "Personkreds": "
Imperial officers with high div clearance
", + "Oplysningstyper": "
Technical specifications and div weak points
", + "Interne_x0020_systemafh_x00e6_ng": "
Integration with Imperial fleet div systems
", + "Eksterne_x0020_systemafh_x00e6_n": "
Connection to contractor div databases
", + "Placering_x0020_af_x0020_data": "
Imperial datacenter on Scarif div planet
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
Data never deleted by Imperial div decree
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
Imperial Data Processing div Division
", + "Er_x0020_der_x0020_indg_x00e5_et": "Ja", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Classified", + "Link_x0020_til_x0020_revisorerkl": "
Imperial audit division div report
", + "Systembrug": "
Used for construction and div maintenance
", + "Anmodning_x0020_om_x0020_indsigt": "
Requests handled by Imperial div Security
", + "Ibrugtagning": "2025-05-15T08:30:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
Contains thermal exhaust port div specifications
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Ja" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Nej", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 2, + "Modified": "2025-06-18T13:25:45Z", + "Created": "2025-03-12T10:45:30Z", + "Author": { + "Email": "vader@empire.gov", + "TypeId": "{yz1234}", + "LookupId": 9, + "LookupValue": "Darth Vader" + }, + "Editor": { + "Email": "emperor@empire.gov", + "TypeId": "{abc567}", + "LookupId": 11, + "LookupValue": "Emperor Palpatine" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 8, + "WorkflowVersion": 1, + "_UIVersion": 4096, + "_UIVersionString": "8.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 120.0, + "GUID": "{def890ghi123}", + "WorkflowInstanceID": null, + "FileRef": "/.002", + "FileDirRef": "/ipsum", + "Last_x0020_Modified": "2025-06-18T13:25:45Z", + "Created_x0020_Date": "2025-03-12T10:45:30Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 4, + "LookupValue": "0", + "TypeId": "{jkl456}" + }, + "FileLeafRef": "2_.002", + "UniqueId": "{mno789pqr012}", + "ParentUniqueId": "{stu345}", + "SyncClientId": { + "LookupId": 5, + "LookupValue": null, + "TypeId": "{vwx678}" + }, + "ProgId": "DeathStar", + "ScopeId": "{yz9012}", + "MetaInfo": "DS-1 Orbital Battle Station", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "Yes", + "OriginatorId": "{abc345}", + "NoExecute": "0", + "ContentVersion": "2", + "_ComplianceFlags": "Classified", + "_ComplianceTag": "ImperialTopSecret", + "_ComplianceTagWrittenTime": "2025-03-12T10:45:30Z", + "_ComplianceTagUserId": "empire", + "AccessPolicy": "Restricted", + "_VirusStatus": "Clean", + "_VirusVendorID": "AV2", + "_VirusInfo": "Scanned", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Tarkin", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 62500, + "LookupValue": "35MB", + "TypeId": "{def678}" + }, + "SMLastModifiedDate": "2025-06-18T13:25:45Z", + "SMTotalFileStreamSize": "8192", + "SMTotalFileCount": { + "LookupId": 18, + "LookupValue": "18", + "TypeId": "{ghi901}" + }, + "_CommentFlags": "Disabled", + "_CommentCount": "0" + }, + { + "ContentTypeId": { + "StringValue": "0004", + "TypeId": "{jkl234}" + }, + "Title": "Jedi Archives System", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "MKB-Jedi Council", + "Fortrolige_x0020_oplysninger": "Ja", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Repository of all Jedi knowledge and div teachings
", + "Systemejer2": [ + { + "Email": "yoda@jedi.temple", + "TypeId": "{mno567}", + "LookupId": 12, + "LookupValue": "Master Yoda" + } + ], + "Systemets_x0020_klassifikation_x": "Level 4", + "Dato_x0020_for_x0020_revision": "2025-07-10T11:20:00Z", + "Personkreds": "
Jedi Masters and Knights with div clearance
", + "Oplysningstyper": "
Ancient texts and holocron div data
", + "Interne_x0020_systemafh_x00e6_ng": "
Connection to Jedi training div systems
", + "Eksterne_x0020_systemafh_x00e6_n": "
Limited access for Republic div Senate
", + "Placering_x0020_af_x0020_data": "
Jedi Temple on Coruscant with div backup
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
Information preserved for all div time
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
Jedi Archivists and div librarians
", + "Er_x0020_der_x0020_indg_x00e5_et": "Ja", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Approved", + "Link_x0020_til_x0020_revisorerkl": "
Jedi Council approval div record
", + "Systembrug": "
Research and preservation of div knowledge
", + "Anmodning_x0020_om_x0020_indsigt": "
Requests approved by Jedi div Council
", + "Ibrugtagning": "2025-02-18T09:15:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
Contains restricted Sith div knowledge
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Ja" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Ja", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 3, + "Modified": "2025-05-22T14:30:15Z", + "Created": "2025-02-10T08:20:35Z", + "Author": { + "Email": "kenobi@jedi.temple", + "TypeId": "{pqr890}", + "LookupId": 15, + "LookupValue": "Obi-Wan Kenobi" + }, + "Editor": { + "Email": "windu@jedi.temple", + "TypeId": "{stu123}", + "LookupId": 18, + "LookupValue": "Mace Windu" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 6, + "WorkflowVersion": 1, + "_UIVersion": 3072, + "_UIVersionString": "6.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 130.0, + "GUID": "{vwx456yz789}", + "WorkflowInstanceID": null, + "FileRef": "/.003", + "FileDirRef": "/filedir", + "Last_x0020_Modified": "2025-05-22T14:30:15Z", + "Created_x0020_Date": "2025-02-10T08:20:35Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 6, + "LookupValue": "0", + "TypeId": "{abc789}" + }, + "FileLeafRef": "3_.003", + "UniqueId": "{def012ghi345}", + "ParentUniqueId": "{jkl678}", + "SyncClientId": { + "LookupId": 7, + "LookupValue": null, + "TypeId": "{mno901}" + }, + "ProgId": "JediArchives", + "ScopeId": "{pqr234}", + "MetaInfo": "Holocron Collection", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "Yes", + "OriginatorId": "{stu567}", + "NoExecute": "0", + "ContentVersion": "3", + "_ComplianceFlags": "Protected", + "_ComplianceTag": "JediKnowledge", + "_ComplianceTagWrittenTime": "2025-02-10T08:20:35Z", + "_ComplianceTagUserId": "jedi", + "AccessPolicy": "Restricted", + "_VirusStatus": "Clean", + "_VirusVendorID": "AV3", + "_VirusInfo": "Scanned", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Yoda", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 75800, + "LookupValue": "42MB", + "TypeId": "{vwx234}" + }, + "SMLastModifiedDate": "2025-05-22T14:30:15Z", + "SMTotalFileStreamSize": "12288", + "SMTotalFileCount": { + "LookupId": 24, + "LookupValue": "24", + "TypeId": "{yz5678}" + }, + "_CommentFlags": "Enabled", + "_CommentCount": "5" + }, + { + "ContentTypeId": { + "StringValue": "0005", + "TypeId": "{abc901}" + }, + "Title": "Millennium Falcon Maintenance System", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "MBU-Rebel Alliance", + "Fortrolige_x0020_oplysninger": "Nej", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Tracking maintenance and repairs for div Millennium Falcon
", + "Systemejer2": [ + { + "Email": "solo@falcon.ship", + "TypeId": "{def234}", + "LookupId": 20, + "LookupValue": "Han Solo" + } + ], + "Systemets_x0020_klassifikation_x": "Level 2", + "Dato_x0020_for_x0020_revision": "2025-11-25T16:45:00Z", + "Personkreds": "
Ship crew and maintenance div personnel
", + "Oplysningstyper": "
Ship components and repair div history
", + "Interne_x0020_systemafh_x00e6_ng": "
Connection to parts inventory div system
", + "Eksterne_x0020_systemafh_x00e6_n": "
Supply chain for replacement div parts
", + "Placering_x0020_af_x0020_data": "
Onboard computer with backup on div base
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
Data kept for ship's div lifetime
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
Chewbacca and C-3PO handle div data
", + "Er_x0020_der_x0020_indg_x00e5_et": "Nej", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Not Required", + "Link_x0020_til_x0020_revisorerkl": "
No formal audit div required
", + "Systembrug": "
Used for maintenance tracking and div repairs
", + "Anmodning_x0020_om_x0020_indsigt": "
Access limited to ship div crew
", + "Ibrugtagning": "2025-04-01T12:30:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
System frequently patched with div workarounds
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Nej" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Ja", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 4, + "Modified": "2025-08-14T10:25:40Z", + "Created": "2025-03-30T14:50:20Z", + "Author": { + "Email": "chewie@falcon.ship", + "TypeId": "{ghi567}", + "LookupId": 22, + "LookupValue": "Chewbacca" + }, + "Editor": { + "Email": "lando@cloudcity.biz", + "TypeId": "{jkl890}", + "LookupId": 25, + "LookupValue": "Lando Calrissian" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 5, + "WorkflowVersion": 1, + "_UIVersion": 2560, + "_UIVersionString": "5.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 140.0, + "GUID": "{mno678pqr901}", + "WorkflowInstanceID": null, + "FileRef": "/.004", + "FileDirRef": "/aa", + "Last_x0020_Modified": "2025-08-14T10:25:40Z", + "Created_x0020_Date": "2025-03-30T14:50:20Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 8, + "LookupValue": "0", + "TypeId": "{stu012}" + }, + "FileLeafRef": "4_.004", + "UniqueId": "{vwx345yz678}", + "ParentUniqueId": "{abc901}", + "SyncClientId": { + "LookupId": 9, + "LookupValue": null, + "TypeId": "{def234}" + }, + "ProgId": "Falcon", + "ScopeId": "{ghi567}", + "MetaInfo": "YT-1300 Corellian Freighter", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "No", + "OriginatorId": "{jkl890}", + "NoExecute": "0", + "ContentVersion": "4", + "_ComplianceFlags": "Standard", + "_ComplianceTag": "ShipMaintenance", + "_ComplianceTagWrittenTime": "2025-03-30T14:50:20Z", + "_ComplianceTagUserId": "solo", + "AccessPolicy": "Limited", + "_VirusStatus": "Clean", + "_VirusVendorID": "AV4", + "_VirusInfo": "Scanned", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Han", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 48600, + "LookupValue": "18MB", + "TypeId": "{mno345}" + }, + "SMLastModifiedDate": "2025-08-14T10:25:40Z", + "SMTotalFileStreamSize": "3072", + "SMTotalFileCount": { + "LookupId": 8, + "LookupValue": "8", + "TypeId": "{pqr678}" + }, + "_CommentFlags": "Enabled", + "_CommentCount": "12" + }, + { + "ContentTypeId": { + "StringValue": "0006", + "TypeId": "{stu345}" + }, + "Title": "Kobayashi Maru Simulation", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "BA-Starfleet Academy", + "Fortrolige_x0020_oplysninger": "Ja", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Command training simulation for div cadets
", + "Systemejer2": [ + { + "Email": "spock@starfleet.edu", + "TypeId": "{vwx678}", + "LookupId": 28, + "LookupValue": "Commander Spock" + } + ], + "Systemets_x0020_klassifikation_x": "Level 3", + "Dato_x0020_for_x0020_revision": "2025-10-05T13:40:00Z", + "Personkreds": "
Starfleet Academy cadets and div instructors
", + "Oplysningstyper": "
Simulation parameters and cadet div performance
", + "Interne_x0020_systemafh_x00e6_ng": "
Academy evaluation div systems
", + "Eksterne_x0020_systemafh_x00e6_n": "
No external connections for div security
", + "Placering_x0020_af_x0020_data": "
Starfleet Academy div servers
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
Cadet data retained for 10 div years
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
Academy computer science div department
", + "Er_x0020_der_x0020_indg_x00e5_et": "Ja", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Verified", + "Link_x0020_til_x0020_revisorerkl": "
Academy board div approval
", + "Systembrug": "
Used for testing command div decisions
", + "Anmodning_x0020_om_x0020_indsigt": "
Requests processed by div instructors
", + "Ibrugtagning": "2025-01-22T09:30:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
No-win scenario designed to test div character
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Ja" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Nej", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 5, + "Modified": "2025-07-20T15:10:55Z", + "Created": "2025-01-15T11:25:40Z", + "Author": { + "Email": "kirk@starfleet.edu", + "TypeId": "{yz9012}", + "LookupId": 30, + "LookupValue": "James T. Kirk" + }, + "Editor": { + "Email": "pike@starfleet.edu", + "TypeId": "{abc345}", + "LookupId": 32, + "LookupValue": "Christopher Pike" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 7, + "WorkflowVersion": 1, + "_UIVersion": 3584, + "_UIVersionString": "7.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 150.0, + "GUID": "{def678ghi901}", + "WorkflowInstanceID": null, + "FileRef": "/.005", + "FileDirRef": "/aabb", + "Last_x0020_Modified": "2025-07-20T15:10:55Z", + "Created_x0020_Date": "2025-01-15T11:25:40Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 10, + "LookupValue": "0", + "TypeId": "{jkl678}" + }, + "FileLeafRef": "5_.005", + "UniqueId": "{mno901pqr234}", + "ParentUniqueId": "{stu567}", + "SyncClientId": { + "LookupId": 11, + "LookupValue": null, + "TypeId": "{vwx890}" + }, + "ProgId": "KobayashiMaru", + "ScopeId": "{yz1234}", + "MetaInfo": "No-Win Scenario", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "Yes", + "OriginatorId": "{abc567}", + "NoExecute": "0", + "ContentVersion": "5", + "_ComplianceFlags": "Confidential", + "_ComplianceTag": "AcademyTraining", + "_ComplianceTagWrittenTime": "2025-01-15T11:25:40Z", + "_ComplianceTagUserId": "academy", + "AccessPolicy": "Restricted", + "_VirusStatus": "Clean", + "_VirusVendorID": "AV5", + "_VirusInfo": "Scanned", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Spock", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 58300, + "LookupValue": "30MB", + "TypeId": "{def890}" + }, + "SMLastModifiedDate": "2025-07-20T15:10:55Z", + "SMTotalFileStreamSize": "6144", + "SMTotalFileCount": { + "LookupId": 15, + "LookupValue": "15", + "TypeId": "{ghi123}" + }, + "_CommentFlags": "Enabled", + "_CommentCount": "8" + }, + { + "ContentTypeId": { + "StringValue": "0007", + "TypeId": "{jkl123}" + }, + "Title": "Borg Collective Database", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "MSB-Unimatrix Zero", + "Fortrolige_x0020_oplysninger": "Ja", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Central repository of all assimilated div knowledge
", + "Systemejer2": [ + { + "Email": "queen@borg.collective", + "TypeId": "{mno456}", + "LookupId": 35, + "LookupValue": "Borg Queen" + } + ], + "Systemets_x0020_klassifikation_x": "Level 5", + "Dato_x0020_for_x0020_revision": "2025-08-18T18:30:00Z", + "Personkreds": "
All drones connected to the div Collective
", + "Oplysningstyper": "
Biological and technological div specifications
", + "Interne_x0020_systemafh_x00e6_ng": "
Connected to all Borg div systems
", + "Eksterne_x0020_systemafh_x00e6_n": "
Assimilation interfaces for div acquisition
", + "Placering_x0020_af_x0020_data": "
Distributed across all Borg div vessels
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
Data is never deleted, only div assimilated
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
Collective hive mind div processing
", + "Er_x0020_der_x0020_indg_x00e5_et": "Nej", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Irrelevant", + "Link_x0020_til_x0020_revisorerkl": "
Resistance is futile, no audit div required
", + "Systembrug": "
Assimilation planning and drone div coordination
", + "Anmodning_x0020_om_x0020_indsigt": "
All drones have complete div access
", + "Ibrugtagning": "2025-06-05T04:00:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
We are the Borg. You will be div assimilated.
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Ja" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Ja", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 6, + "Modified": "2025-09-10T22:15:30Z", + "Created": "2025-06-01T05:20:10Z", + "Author": { + "Email": "locutus@borg.collective", + "TypeId": "{pqr789}", + "LookupId": 38, + "LookupValue": "Locutus of Borg" + }, + "Editor": { + "Email": "seven@borg.collective", + "TypeId": "{stu012}", + "LookupId": 40, + "LookupValue": "Seven of Nine" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 9, + "WorkflowVersion": 1, + "_UIVersion": 4608, + "_UIVersionString": "9.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 160.0, + "GUID": "{vwx345yz678}", + "WorkflowInstanceID": null, + "FileRef": "/.006", + "FileDirRef": "/aabbcc", + "Last_x0020_Modified": "2025-09-10T22:15:30Z", + "Created_x0020_Date": "2025-06-01T05:20:10Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 12, + "LookupValue": "0", + "TypeId": "{abc890}" + }, + "FileLeafRef": "6_.006", + "UniqueId": "{def123ghi456}", + "ParentUniqueId": "{jkl789}", + "SyncClientId": { + "LookupId": 13, + "LookupValue": null, + "TypeId": "{mno012}" + }, + "ProgId": "BorgCollective", + "ScopeId": "{pqr345}", + "MetaInfo": "Unimatrix 01", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "Yes", + "OriginatorId": "{stu678}", + "NoExecute": "0", + "ContentVersion": "6", + "_ComplianceFlags": "Classified", + "_ComplianceTag": "Assimilated", + "_ComplianceTagWrittenTime": "2025-06-01T05:20:10Z", + "_ComplianceTagUserId": "borg", + "AccessPolicy": "Collective", + "_VirusStatus": "Immune", + "_VirusVendorID": "AV6", + "_VirusInfo": "Assimilated", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Queen", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 95200, + "LookupValue": "95MB", + "TypeId": "{vwx678}" + }, + "SMLastModifiedDate": "2025-09-10T22:15:30Z", + "SMTotalFileStreamSize": "24576", + "SMTotalFileCount": { + "LookupId": 42, + "LookupValue": "42", + "TypeId": "{yz9012}" + }, + "_CommentFlags": "Disabled", + "_CommentCount": "0" + }, + { + "ContentTypeId": { + "StringValue": "0008", + "TypeId": "{abc345}" + }, + "Title": "Galactic Senate Records", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "MKB-Republic Administration", + "Fortrolige_x0020_oplysninger": "Ja", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Archives of Senate proceedings and div legislation
", + "Systemejer2": [ + { + "Email": "amidala@senate.rep", + "TypeId": "{def678}", + "LookupId": 42, + "LookupValue": "Padmé Amidala" + } + ], + "Systemets_x0020_klassifikation_x": "Level 3", + "Dato_x0020_for_x0020_revision": "2025-12-10T10:15:00Z", + "Personkreds": "
Senators and authorized Republic div officials
", + "Oplysningstyper": "
Voting records and legislative div documents
", + "Interne_x0020_systemafh_x00e6_ng": "
Republic judiciary div systems
", + "Eksterne_x0020_systemafh_x00e6_n": "
Planetary representation div databases
", + "Placering_x0020_af_x0020_data": "
Senate archives on div Coruscant
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
Historical records preserved div permanently
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
Senate archival div department
", + "Er_x0020_der_x0020_indg_x00e5_et": "Ja", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Certified", + "Link_x0020_til_x0020_revisorerkl": "
Chancellor's office div certification
", + "Systembrug": "
Recording and searching senate div proceedings
", + "Anmodning_x0020_om_x0020_indsigt": "
Public records available through div request
", + "Ibrugtagning": "2025-02-05T09:45:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
Some classified sections restricted by div Chancellor
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Ja" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Ja", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 7, + "Modified": "2025-04-28T16:35:20Z", + "Created": "2025-02-01T08:30:15Z", + "Author": { + "Email": "organa@senate.rep", + "TypeId": "{ghi901}", + "LookupId": 45, + "LookupValue": "Bail Organa" + }, + "Editor": { + "Email": "palpatine@senate.rep", + "TypeId": "{jkl234}", + "LookupId": 48, + "LookupValue": "Chancellor Palpatine" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 10, + "WorkflowVersion": 1, + "_UIVersion": 5120, + "_UIVersionString": "10.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 170.0, + "GUID": "{mno567pqr890}", + "WorkflowInstanceID": null, + "FileRef": "/.007", + "FileDirRef": "/aabbccdd", + "Last_x0020_Modified": "2025-04-28T16:35:20Z", + "Created_x0020_Date": "2025-02-01T08:30:15Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 14, + "LookupValue": "0", + "TypeId": "{stu345}" + }, + "FileLeafRef": "7_.007", + "UniqueId": "{vwx678yz901}", + "ParentUniqueId": "{abc234}", + "SyncClientId": { + "LookupId": 15, + "LookupValue": null, + "TypeId": "{def567}" + }, + "ProgId": "SenateRecords", + "ScopeId": "{ghi890}", + "MetaInfo": "Galactic Republic", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "Partial", + "OriginatorId": "{jkl123}", + "NoExecute": "0", + "ContentVersion": "7", + "_ComplianceFlags": "Official", + "_ComplianceTag": "SenateArchive", + "_ComplianceTagWrittenTime": "2025-02-01T08:30:15Z", + "_ComplianceTagUserId": "republic", + "AccessPolicy": "Tiered", + "_VirusStatus": "Clean", + "_VirusVendorID": "AV7", + "_VirusInfo": "Scanned", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Amidala", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 84300, + "LookupValue": "84MB", + "TypeId": "{mno456}" + }, + "SMLastModifiedDate": "2025-04-28T16:35:20Z", + "SMTotalFileStreamSize": "18432", + "SMTotalFileCount": { + "LookupId": 36, + "LookupValue": "36", + "TypeId": "{pqr789}" + }, + "_CommentFlags": "Enabled", + "_CommentCount": "25" + }, + { + "ContentTypeId": { + "StringValue": "0009", + "TypeId": "{stu678}" + }, + "Title": "Vulcan Science Academy Database", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "MBU-Vulcan High Command", + "Fortrolige_x0020_oplysninger": "Ja", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Repository of all scientific div discoveries
", + "Systemejer2": [ + { + "Email": "sarek@vsa.vlc", + "TypeId": "{vwx012}", + "LookupId": 50, + "LookupValue": "Ambassador Sarek" + } + ], + "Systemets_x0020_klassifikation_x": "Level 4", + "Dato_x0020_for_x0020_revision": "2025-11-05T08:20:00Z", + "Personkreds": "
Vulcan scientists and div researchers
", + "Oplysningstyper": "
Scientific data and research div findings
", + "Interne_x0020_systemafh_x00e6_ng": "
Integration with laboratory div systems
", + "Eksterne_x0020_systemafh_x00e6_n": "
Federation scientific div exchange
", + "Placering_x0020_af_x0020_data": "
Secured servers on Vulcan with div backups
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
Knowledge is preserved div indefinitely
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
Academy Information div Systems
", + "Er_x0020_der_x0020_indg_x00e5_et": "Ja", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Logical", + "Link_x0020_til_x0020_revisorerkl": "
Logical verification div process
", + "Systembrug": "
Scientific research and div education
", + "Anmodning_x0020_om_x0020_indsigt": "
Access granted based on logical div need
", + "Ibrugtagning": "2025-03-12T07:30:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
Categorized with Vulcan div precision
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Ja" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Ja", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 8, + "Modified": "2025-10-12T12:40:25Z", + "Created": "2025-03-08T06:15:30Z", + "Author": { + "Email": "tpol@vsa.vlc", + "TypeId": "{yz345}", + "LookupId": 52, + "LookupValue": "T'Pol" + }, + "Editor": { + "Email": "tuvok@vsa.vlc", + "TypeId": "{abc678}", + "LookupId": 55, + "LookupValue": "Tuvok" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 8, + "WorkflowVersion": 1, + "_UIVersion": 4096, + "_UIVersionString": "8.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 180.0, + "GUID": "{def901ghi234}", + "WorkflowInstanceID": null, + "FileRef": "/.008", + "FileDirRef": "/aabbccddee", + "Last_x0020_Modified": "2025-10-12T12:40:25Z", + "Created_x0020_Date": "2025-03-08T06:15:30Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 16, + "LookupValue": "0", + "TypeId": "{jkl567}" + }, + "FileLeafRef": "8_.008", + "UniqueId": "{mno890pqr123}", + "ParentUniqueId": "{stu456}", + "SyncClientId": { + "LookupId": 17, + "LookupValue": null, + "TypeId": "{vwx789}" + }, + "ProgId": "VulcanScience", + "ScopeId": "{yz0123}", + "MetaInfo": "Logical Database", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "Yes", + "OriginatorId": "{abc456}", + "NoExecute": "0", + "ContentVersion": "8", + "_ComplianceFlags": "Protected", + "_ComplianceTag": "VulcanKnowledge", + "_ComplianceTagWrittenTime": "2025-03-08T06:15:30Z", + "_ComplianceTagUserId": "vulcan", + "AccessPolicy": "Logical", + "_VirusStatus": "Clean", + "_VirusVendorID": "AV8", + "_VirusInfo": "Scanned", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Sarek", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 67900, + "LookupValue": "67MB", + "TypeId": "{def789}" + }, + "SMLastModifiedDate": "2025-10-12T12:40:25Z", + "SMTotalFileStreamSize": "15360", + "SMTotalFileCount": { + "LookupId": 30, + "LookupValue": "30", + "TypeId": "{ghi012}" + }, + "_CommentFlags": "Enabled", + "_CommentCount": "17" + }, + { + "ContentTypeId": { + "StringValue": "0010", + "TypeId": "{jkl345}" + }, + "Title": "Rebel Alliance Intelligence", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "BA-Rebel Command", + "Fortrolige_x0020_oplysninger": "Ja", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Storage of Imperial intelligence and div fleet movements
", + "Systemejer2": [ + { + "Email": "mothma@rebels.org", + "TypeId": "{mno678}", + "LookupId": 58, + "LookupValue": "Mon Mothma" + } + ], + "Systemets_x0020_klassifikation_x": "Level 5", + "Dato_x0020_for_x0020_revision": "2025-12-25T23:59:00Z", + "Personkreds": "
Rebel leadership and div intelligence officers
", + "Oplysningstyper": "
Imperial fleet positions and div vulnerabilities
", + "Interne_x0020_systemafh_x00e6_ng": "
Rebel command div systems
", + "Eksterne_x0020_systemafh_x00e6_n": "
Bothan spy div network
", + "Placering_x0020_af_x0020_data": "
Mobile rebel base with div encryption
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
Emergency purge on Imperial div detection
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
Alliance Intelligence div Officers
", + "Er_x0020_der_x0020_indg_x00e5_et": "Ja", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Classified", + "Link_x0020_til_x0020_revisorerkl": "
Alliance leadership div approval
", + "Systembrug": "
Mission planning and imperial div tracking
", + "Anmodning_x0020_om_x0020_indsigt": "
Need-to-know basis div only
", + "Ibrugtagning": "2025-07-04T00:00:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
Many Bothans died to bring us this div information
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Ja" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Nej", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 9, + "Modified": "2025-11-20T18:05:10Z", + "Created": "2025-07-01T19:30:45Z", + "Author": { + "Email": "ackbar@rebels.org", + "TypeId": "{pqr012}", + "LookupId": 60, + "LookupValue": "Admiral Ackbar" + }, + "Editor": { + "Email": "leia@rebels.org", + "TypeId": "{stu345}", + "LookupId": 62, + "LookupValue": "Princess Leia" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 11, + "WorkflowVersion": 1, + "_UIVersion": 5632, + "_UIVersionString": "11.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 190.0, + "GUID": "{vwx678yz901}", + "WorkflowInstanceID": null, + "FileRef": "/.009", + "FileDirRef": "/ab", + "Last_x0020_Modified": "2025-11-20T18:05:10Z", + "Created_x0020_Date": "2025-07-01T19:30:45Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 18, + "LookupValue": "0", + "TypeId": "{abc678}" + }, + "FileLeafRef": "9_.009", + "UniqueId": "{def901ghi234}", + "ParentUniqueId": "{jkl567}", + "SyncClientId": { + "LookupId": 19, + "LookupValue": null, + "TypeId": "{mno890}" + }, + "ProgId": "RebelIntel", + "ScopeId": "{pqr123}", + "MetaInfo": "Rebel Alliance", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "Yes", + "OriginatorId": "{stu456}", + "NoExecute": "0", + "ContentVersion": "9", + "_ComplianceFlags": "TopSecret", + "_ComplianceTag": "RebelClassified", + "_ComplianceTagWrittenTime": "2025-07-01T19:30:45Z", + "_ComplianceTagUserId": "rebellion", + "AccessPolicy": "Restricted", + "_VirusStatus": "Clean", + "_VirusVendorID": "AV9", + "_VirusInfo": "Scanned", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Mothma", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 42500, + "LookupValue": "42MB", + "TypeId": "{vwx789}" + }, + "SMLastModifiedDate": "2025-11-20T18:05:10Z", + "SMTotalFileStreamSize": "10240", + "SMTotalFileCount": { + "LookupId": 20, + "LookupValue": "20", + "TypeId": "{yz0123}" + }, + "_CommentFlags": "Disabled", + "_CommentCount": "0" + }, + { + "ContentTypeId": { + "StringValue": "0011", + "TypeId": "{abc456}" + }, + "Title": "TARDIS Operating System", + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "Systemejerskab2": "MKB-Time Lord Council", + "Fortrolige_x0020_oplysninger": "Ja", + "Anmeldelsen_x0020_er_x0020_tv_x0": null, + "Form_x00e5_l": "
Temporal navigation and div dimensional control
", + "Systemejer2": [ + { + "Email": "doctor@tardis.gal", + "TypeId": "{def789}", + "LookupId": 65, + "LookupValue": "The Doctor" + } + ], + "Systemets_x0020_klassifikation_x": "Level 6", + "Dato_x0020_for_x0020_revision": "2025-04-23T17:30:00Z", + "Personkreds": "
Time Lords and authorized div companions
", + "Oplysningstyper": "
Temporal coordinates and historical div data
", + "Interne_x0020_systemafh_x00e6_ng": "
TARDIS matrix and div core systems
", + "Eksterne_x0020_systemafh_x00e6_n": "
Temporal vortex div interfaces
", + "Placering_x0020_af_x0020_data": "
Dimensionally transcendental div space
", + "Hvorn_x00e5_r_x0020_slettes_x002": "
Data exists across all div timelines
", + "Bevaringsv_x00e6_rdige_x0020_dat": null, + "Databehandler": "
TARDIS consciousness and div matrix
", + "Er_x0020_der_x0020_indg_x00e5_et": "Ja", + "Link_x0020_til_x0020_databehandl": null, + "Revisorerkl_x00e6_ring": "Timeless", + "Link_x0020_til_x0020_revisorerkl": "
Gallifreyan High Council div certification
", + "Systembrug": "
Time and space div travel
", + "Anmodning_x0020_om_x0020_indsigt": "
Access granted by TARDIS div consciousness
", + "Ibrugtagning": "2025-05-18T19:20:00Z", + "Status_x0020_2": "Aktiv", + "Bem_x00e6_rkninger": "
Chameleon circuit currently div malfunctioning
", + "LikesCount": null, + "Oplysningspligten": null, + "Systemstedfortr_x00e6_der": null, + "Retligt_x0020_grundlag": null, + "Samtykke": null, + "Konsekvensanalyse": null, + "Autorisationsprocedure": null, + "Videregivelse_x0020_af_x0020_opl": null, + "Indsigt_x0020__x002d__x0020_inte": null, + "Link_x0020_til_x0020_konsekvensa": null, + "Dato_x0020_for_x0020_revisorerkl": null, + "Dataansvar": null, + "Sidst_x0020_udf_x00f8_rte_x0020_": null, + "Systemejers_x0020_mailadresse": null, + "Bem_x00e6_rkninger_x0020_til_x00": null, + "Fortrolige_x0020_oplysninger0": [ + "Ja" + ], + "Procedurebeskrivelser": null, + "Dato_x0020_for_x0020_kontrol_x00": null, + "Tv_x002d_overv_x00e5_gning": null, + "Automatiske_x0020_afg_x00f8_rels": null, + "Placering_x0020_af_x0020_data_x0": null, + "Dato_x0020_for_x0020_udsendelse_": null, + "Indsigt": "Ja", + "Risikovurdering": null, + "Dato_x0020_for_x0020_modtaget_x0": null, + "Dato_x0020_for_x0020_f_x00e6_rdi": null, + "Dato_x0020_for_x0020_seneste_x00": null, + "Dato_x0020_for_x0020_seneste_x000": null, + "Overf_x00f8_rselsgrundlag": null, + "Tilsynskoncept": null, + "Frekvens_x0020_af_x0020_tilsyn": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "Angiv_x0020_f_x00f8_lsomme_x0020": null, + "Foranstaltninger": null, + "Kontaktoplysninger_x0020_p_x00e5": null, + "Kontaktoplysninger_x0020_p_x00e50": null, + "Kontaktoplysninger_x0020_p_x00e51": null, + "Teknisk_x0020_systemejer_x002f_p": null, + "Teknisk_x0020_systemejer_x002f_p0": null, + "Modtagere_x0020_i_x0020_tredjela": null, + "Link_x0020_til_x0020_samtykkeerk": null, + "Autorisationsprocedure_x0020__x0": null, + "Dato_x0020_for_x0020_revision_x0": null, + "Kategorisering": null, + "Stikpr_x00f8_vekontrol": null, + "Dato_x0020_for_x0020_seneste_x001": null, + "Beskrivelse_x0020_af_x0020_stikp": null, + "Fortrolige_x0020_personoplysning": null, + "ID": 10, + "Modified": "2025-06-05T14:15:30Z", + "Created": "2025-05-15T11:40:20Z", + "Author": { + "Email": "master@timelord.gal", + "TypeId": "{ghi012}", + "LookupId": 68, + "LookupValue": "The Master" + }, + "Editor": { + "Email": "tardis@timelord.gal", + "TypeId": "{jkl345}", + "LookupId": 70, + "LookupValue": "TARDIS Interface" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 13, + "WorkflowVersion": 1, + "_UIVersion": 6656, + "_UIVersionString": "13.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 200.0, + "GUID": "{mno678pqr901}", + "WorkflowInstanceID": null, + "FileRef": "/.010", + "FileDirRef": "/FileDirRef", + "Last_x0020_Modified": "2025-06-05T14:15:30Z", + "Created_x0020_Date": "2025-05-15T11:40:20Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 20, + "LookupValue": "0", + "TypeId": "{stu789}" + }, + "FileLeafRef": "10_.010", + "UniqueId": "{vwx012yz345}", + "ParentUniqueId": "{abc678}", + "SyncClientId": { + "LookupId": 21, + "LookupValue": null, + "TypeId": "{def901}" + }, + "ProgId": "TARDIS", + "ScopeId": "{ghi234}", + "MetaInfo": "Type 40 TT Capsule", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "Yes", + "OriginatorId": "{jkl567}", + "NoExecute": "0", + "ContentVersion": "10", + "_ComplianceFlags": "TimeLocked", + "_ComplianceTag": "GallifreyanTechnology", + "_ComplianceTagWrittenTime": "2025-05-15T11:40:20Z", + "_ComplianceTagUserId": "timelord", + "AccessPolicy": "TARDIS", + "_VirusStatus": "Immune", + "_VirusVendorID": "AV10", + "_VirusInfo": "Temporally Protected", + "_RansomwareAnomalyMetaInfo": "None", + "_DraftOwnerId": "Doctor", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 99999, + "LookupValue": "Infinite", + "TypeId": "{mno567}" + }, + "SMLastModifiedDate": "2025-06-05T14:15:30Z", + "SMTotalFileStreamSize": "Bigger on the inside", + "SMTotalFileCount": { + "LookupId": 42424, + "LookupValue": "42424", + "TypeId": "{pqr890}" + }, + "_CommentFlags": "Enabled", + "_CommentCount": "42" + } +] diff --git a/src/DataFixtures/example_data/systems.json b/src/DataFixtures/example_data/systems.json new file mode 100644 index 0000000..338791e --- /dev/null +++ b/src/DataFixtures/example_data/systems.json @@ -0,0 +1,980 @@ +[ + { + "Overf_x00f8_rt_x0020_til_x0020_K": null, + "Title": "Ring Management System", + "Kaldenavn": "RMS", + "Beskrivelse": "
The central platform for
monitoring magical artifacts and tracking
across Middle-earth
", + "Systemejerskab": "MSB-Council of Elrond: Artifact Protection", + "Systemejerskab_x0020__x002d__x00": "Security", + "Systemejer2": [ + { + "Email": "elrond@rivendell.me", + "TypeId": "{a843cb51f8b7d2c19a5ec96f42718e}", + "LookupId": 112, + "LookupValue": "Elrond Halfelven" + } + ], + "System_x0020_stedfortr_x00e6_der": [ + { + "Email": "galadriel@lothlorien.me", + "TypeId": "{b723ab43c9ef3d18b4f7c85e31629d}", + "LookupId": 87, + "LookupValue": "Lady Galadriel" + } + ], + "Intern_x0020_driftsansvarlig2": [ + { + "Email": "gandalf@istari.me", + "TypeId": "{c956ab54c16bd4c1889d2996f57282}", + "LookupId": 204, + "LookupValue": "Gandalf the Grey" + } + ], + "Ekstern_x0020_driftsansvarlig": "
Support hours dawn till dusk via the following channels:
", + "Systemleverand_x00f8_r": "
Noldor Craft Industries
", + "Urgency_x0020_rating": "World-Saving Critical", + "Antal_x0020_brugere": "> 100", + "Teknisk_x0020_dokumentation2": { + "Description": "Elvish Technical Documentation", + "Url": "https://middleearth.sharepoint.com/Teams/council-of-elrond/RMS/Documentation", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Interne_x0020_systemafh_x00e6_ng": [ + { + "LookupId": 177, + "LookupValue": "Palantír Network System", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + } + ], + "Systemafh_x00e6_ngigheder_x0020_": [], + "Eksterne_x0020_systemafh_x00e6_n": "

Integration with Gondorian defense systems

", + "Kommentarer": "

System enhancement planned after Council meeting in Q1 2025

", + "Servernavne": null, + "Brugervejledninger": { + "Description": "Ring Bearer's Guide", + "Url": "https://middleearth.sharepoint.com/Teams/council-of-elrond/RMS/UserGuides", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Superbrugerorganisation": { + "Description": "White Council", + "Url": "https://middleearth.sharepoint.com/Teams/white-council/Members", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "IT_x002d_sikkerheds_x0020_katego": "Med magiske artefaktdata", + "Intern_x0020_IT_x002d_Sikkerheds": { + "Description": "Artifact Security Protocols", + "Url": "https://middleearth.sharepoint.com/Teams/security/Documents/RMS-Security", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontrakt_x0020_beskrivelse": { + "Description": "Alliance Treaty", + "Url": "https://middleearth.sharepoint.com/Teams/contracts/LastAlliance-Treaty", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontraktudl_x00f8_bsdato": "2025-03-25T00:00:00Z", + "Udbudstype": "Council Selection", + "End_x002d_of_x002d_Life": "2025-10-31T00:00:00Z", + "End_x002d_of_x002d_Life_x0020_be": "Migration to Valinor platform planned", + "Arkivering": "Systemet er i drift, under beskyttelse", + "Open_x0020_Data": "nej", + "Open_x0020_Source_x0020_system": "Nej", + "Digital_x0020_post": "Ja", + "Systemkategori": [ + "Artifact Management", + "Tracking" + ], + "Tilg_x00e6_ngelighedserkl_x00e6_": "Godkendt", + "Antal_x0020_digitale_x0020_trans": "3000", + "Antal_x0020_totale_x0020_transak": "5000", + "Selvbetjenings_x002d_URL": "https://rms.middleearth.me", + "Selvbetjening_x0020_tilg_x00e6_n": [ + "palantír", + "scroll" + ], + "Loginmetoder": "Elvish Authentication", + "F_x00e6_llesbegreb": [ + "Rings", + "Magic" + ], + "Software_x0020_pakke": "Mithrilian Guardian Suite", + "Versions_x0020_nummer_x002f_rele": "v3.0.1", + "LikesCount": null, + "ContentTypeId": { + "StringValue": "0x01004C8D264DE7164D4ABF2189003B5EB697", + "TypeId": "{da0f1e90-296f-480e-bc27-cefe51eff241}" + }, + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "ID": 45, + "Modified": "2025-02-14T11:30:22Z", + "Created": "2025-01-03T08:45:12Z", + "Author": { + "Email": "frodo@shire.me", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 156, + "LookupValue": "Frodo Baggins" + }, + "Editor": { + "Email": "aragorn@rangers.me", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 203, + "LookupValue": "Aragorn II Elessar" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 7, + "WorkflowVersion": 1, + "_UIVersion": 1536, + "_UIVersionString": "3.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 100.0, + "GUID": "bd5c3217-ec06-6dc4-0820-f9c6fe87396g", + "WorkflowInstanceID": null, + "FileRef": "/Teams/council-of-elrond/Lists/Systemoversigt/45_.000", + "FileDirRef": "/Teams/council-of-elrond/Lists/Systemoversigt", + "Last_x0020_Modified": "2025-02-14T11:30:22Z", + "Created_x0020_Date": "2025-01-03T08:45:12Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 1, + "LookupValue": "0", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "FileLeafRef": "45_.000", + "UniqueId": "7b132c4g-25f5-5e79-9b18-5223d0gd01cg", + "ParentUniqueId": "{E7686D23-1DF8-5583-CF3B-F53390A8EDC}", + "SyncClientId": { + "LookupId": 1, + "LookupValue": null, + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "ProgId": "", + "ScopeId": "{543F09E8-0356-5F9C-CF35-53BDCB166CEE}", + "MetaInfo": "", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "", + "OriginatorId": "", + "NoExecute": "0", + "ContentVersion": "0", + "_ComplianceFlags": "", + "_ComplianceTag": "", + "_ComplianceTagWrittenTime": "", + "_ComplianceTagUserId": "", + "AccessPolicy": "", + "_VirusStatus": "", + "_VirusVendorID": "", + "_VirusInfo": "", + "_RansomwareAnomalyMetaInfo": "", + "_DraftOwnerId": "", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 35620, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "SMLastModifiedDate": "2025-02-14T11:30:22Z", + "SMTotalFileStreamSize": "0", + "SMTotalFileCount": { + "LookupId": 0, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "_CommentFlags": "", + "_CommentCount": "" + }, + { + "Overf_x00f8_rt_x0020_til_x0020_K": null, + "Title": "Shire Resource Planning System", + "Kaldenavn": "SRPS", + "Beskrivelse": "
Comprehensive platform for
managing agricultural resources and hobbit meals
across the Shire
", + "Systemejerskab": "BA-Shire Administration: Food Management", + "Systemejerskab_x0020__x002d__x00": "Agriculture", + "Systemejer2": [ + { + "Email": "samwise@gardener.sh", + "TypeId": "{a843cb51f8b7d2c19a5ec96f42718e}", + "LookupId": 143, + "LookupValue": "Samwise Gamgee" + } + ], + "System_x0020_stedfortr_x00e6_der": [ + { + "Email": "merry@brandybuck.sh", + "TypeId": "{b723ab43c9ef3d18b4f7c85e31629d}", + "LookupId": 91, + "LookupValue": "Meriadoc Brandybuck" + } + ], + "Intern_x0020_driftsansvarlig2": [ + { + "Email": "pippin@took.sh", + "TypeId": "{c956ab54c16bd4c1889d2996f57282}", + "LookupId": 157, + "LookupValue": "Peregrin Took" + } + ], + "Ekstern_x0020_driftsansvarlig": "
Support available all seven meals daily via:
", + "Systemleverand_x00f8_r": "
Shire Information Systems
", + "Urgency_x0020_rating": "Meal Critical Service", + "Antal_x0020_brugere": "> 500", + "Teknisk_x0020_dokumentation2": { + "Description": "Hobbit-Friendly Documentation", + "Url": "https://shire.sharepoint.com/Teams/hobbit-council/SRPS/Documentation", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Interne_x0020_systemafh_x00e6_ng": [ + { + "LookupId": 123, + "LookupValue": "Hobbit Census Registry", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + } + ], + "Systemafh_x00e6_ngigheder_x0020_": [], + "Eksterne_x0020_systemafh_x00e6_n": "

Integration with Bree trading systems

", + "Kommentarer": "

Second breakfast module update scheduled for Q3 2025

", + "Servernavne": null, + "Brugervejledninger": { + "Description": "Hobbit User Guide", + "Url": "https://shire.sharepoint.com/Teams/hobbit-council/SRPS/UserManuals", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Superbrugerorganisation": { + "Description": "Mayor's Office", + "Url": "https://shire.sharepoint.com/Teams/mayors-office/SRPS/Admins", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "IT_x002d_sikkerheds_x0020_katego": "Med hobbitdata", + "Intern_x0020_IT_x002d_Sikkerheds": { + "Description": "Shire Security Protocols", + "Url": "https://shire.sharepoint.com/Teams/security/Documents/SRPS-Security", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontrakt_x0020_beskrivelse": { + "Description": "Shire Service Agreement", + "Url": "https://shire.sharepoint.com/Teams/contracts/SRPS-Agreement", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontraktudl_x00f8_bsdato": "2025-06-22T00:00:00Z", + "Udbudstype": "Shire Selection", + "End_x002d_of_x002d_Life": null, + "End_x002d_of_x002d_Life_x0020_be": null, + "Arkivering": "Systemet er i drift, under vedligeholdelse", + "Open_x0020_Data": "ja", + "Open_x0020_Source_x0020_system": "Ja", + "Digital_x0020_post": "Ja", + "Systemkategori": [ + "Resource Planning", + "Agriculture" + ], + "Tilg_x00e6_ngelighedserkl_x00e6_": "Godkendt", + "Antal_x0020_digitale_x0020_trans": "12000", + "Antal_x0020_totale_x0020_transak": "15000", + "Selvbetjenings_x002d_URL": "https://srps.shire.me", + "Selvbetjening_x0020_tilg_x00e6_n": [ + "scroll", + "hobbit-device" + ], + "Loginmetoder": "Hobbit Identification", + "F_x00e6_llesbegreb": [ + "Agriculture", + "Food", + "Planning" + ], + "Software_x0020_pakke": "ShireSoft Resource Suite", + "Versions_x0020_nummer_x002f_rele": "v2.5.7", + "LikesCount": null, + "ContentTypeId": { + "StringValue": "0x01004C8D264DE7164D4ABF2189003B5EB697", + "TypeId": "{da0f1e90-296f-480e-bc27-cefe51eff241}" + }, + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "ID": 52, + "Modified": "2025-05-16T15:20:33Z", + "Created": "2025-01-20T11:33:45Z", + "Author": { + "Email": "bilbo@bagend.sh", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 189, + "LookupValue": "Bilbo Baggins" + }, + "Editor": { + "Email": "gaffer@gardener.sh", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 231, + "LookupValue": "Hamfast Gamgee" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 9, + "WorkflowVersion": 1, + "_UIVersion": 1536, + "_UIVersionString": "3.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 100.0, + "GUID": "ac4b2106-db95-5cb3-9719-e8b5ed76285f", + "WorkflowInstanceID": null, + "FileRef": "/Teams/hobbit-council/Lists/Systemoversigt/52_.000", + "FileDirRef": "/Teams/hobbit-council/Lists/Systemoversigt", + "Last_x0020_Modified": "2025-05-16T15:20:33Z", + "Created_x0020_Date": "2025-01-20T11:33:45Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 1, + "LookupValue": "0", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "FileLeafRef": "52_.000", + "UniqueId": "8c243d5h-36g6-6f80-0c29-6334e1he12dh", + "ParentUniqueId": "{F8797E34-2GH9-6694-DG4C-G64401B9FED}", + "SyncClientId": { + "LookupId": 1, + "LookupValue": null, + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "ProgId": "", + "ScopeId": "{654G10F9-1467-6G0D-DG46-64CEDC277DFF}", + "MetaInfo": "", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "", + "OriginatorId": "", + "NoExecute": "0", + "ContentVersion": "0", + "_ComplianceFlags": "", + "_ComplianceTag": "", + "_ComplianceTagWrittenTime": "", + "_ComplianceTagUserId": "", + "AccessPolicy": "", + "_VirusStatus": "", + "_VirusVendorID": "", + "_VirusInfo": "", + "_RansomwareAnomalyMetaInfo": "", + "_DraftOwnerId": "", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 45200, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "SMLastModifiedDate": "2025-05-16T15:20:33Z", + "SMTotalFileStreamSize": "0", + "SMTotalFileCount": { + "LookupId": 0, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "_CommentFlags": "", + "_CommentCount": "" + }, + { + "Overf_x00f8_rt_x0020_til_x0020_K": null, + "Title": "Gondorian Defense System", + "Kaldenavn": "GDS", + "Beskrivelse": "
Integrated system for
monitoring borders and coordinating defense forces
across the realm of Gondor
", + "Systemejerskab": "MBU-Citadel Command: Strategic Defense", + "Systemejerskab_x0020__x002d__x00": "Military", + "Systemejer2": [ + { + "Email": "denethor@gondor.me", + "TypeId": "{a843cb51f8b7d2c19a5ec96f42718e}", + "LookupId": 175, + "LookupValue": "Denethor II" + } + ], + "System_x0020_stedfortr_x00e6_der": [ + { + "Email": "boromir@gondor.me", + "TypeId": "{b723ab43c9ef3d18b4f7c85e31629d}", + "LookupId": 133, + "LookupValue": "Boromir of Gondor" + } + ], + "Intern_x0020_driftsansvarlig2": [ + { + "Email": "faramir@gondor.me", + "TypeId": "{c956ab54c16bd4c1889d2996f57282}", + "LookupId": 198, + "LookupValue": "Faramir of Gondor" + } + ], + "Ekstern_x0020_driftsansvarlig": "
Support available day and night via:
", + "Systemleverand_x00f8_r": "
White Tower Defense Technologies
", + "Urgency_x0020_rating": "Realm Critical Service", + "Antal_x0020_brugere": "> 1000", + "Teknisk_x0020_dokumentation2": { + "Description": "Defense System Architecture", + "Url": "https://gondor.sharepoint.com/Teams/citadel-command/GDS/Technical", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Interne_x0020_systemafh_x00e6_ng": [ + { + "LookupId": 201, + "LookupValue": "Beacon Alert Network", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + { + "LookupId": 215, + "LookupValue": "Ranger Tracking System", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + } + ], + "Systemafh_x00e6_ngigheder_x0020_": [], + "Eksterne_x0020_systemafh_x00e6_n": "

Integration with Rohan messenger network

Connection to Elven early warning systems

", + "Kommentarer": "

Mordor threat detection module upgrade planned for Q1 2025

", + "Servernavne": null, + "Brugervejledninger": { + "Description": "Soldier's Field Manual", + "Url": "https://gondor.sharepoint.com/Teams/citadel-command/GDS/Manuals", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Superbrugerorganisation": { + "Description": "Captain's Council", + "Url": "https://gondor.sharepoint.com/Teams/captains-council/Members", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "IT_x002d_sikkerheds_x0020_katego": "Med militære hemmeligheder", + "Intern_x0020_IT_x002d_Sikkerheds": { + "Description": "Defense Protocols", + "Url": "https://gondor.sharepoint.com/Teams/security/Documents/GDS-Security", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontrakt_x0020_beskrivelse": { + "Description": "Royal Defense Commission", + "Url": "https://gondor.sharepoint.com/Teams/contracts/GDS-Royal-Commission", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontraktudl_x00f8_bsdato": "2025-11-30T00:00:00Z", + "Udbudstype": "Royal Appointment", + "End_x002d_of_x002d_Life": "2025-12-31T00:00:00Z", + "End_x002d_of_x002d_Life_x0020_be": "Replacement with Fourth Age Defense System", + "Arkivering": "Systemet er i drift, under krigsberedskab", + "Open_x0020_Data": "nej", + "Open_x0020_Source_x0020_system": "Nej", + "Digital_x0020_post": "Ja", + "Systemkategori": [ + "Defense", + "Monitoring", + "Command" + ], + "Tilg_x00e6_ngelighedserkl_x00e6_": "Godkendt", + "Antal_x0020_digitale_x0020_trans": "50000", + "Antal_x0020_totale_x0020_transak": "75000", + "Selvbetjenings_x002d_URL": "https://defense.gondor.me", + "Selvbetjening_x0020_tilg_x00e6_n": [ + "beacon", + "palantír" + ], + "Loginmetoder": "Gondorian Authentication", + "F_x00e6_llesbegreb": [ + "Defense", + "Military", + "Security" + ], + "Software_x0020_pakke": "White Tower Defense Suite", + "Versions_x0020_nummer_x002f_rele": "v3.4.8", + "LikesCount": null, + "ContentTypeId": { + "StringValue": "0x01004C8D264DE7164D4ABF2189003B5EB697", + "TypeId": "{da0f1e90-296f-480e-bc27-cefe51eff241}" + }, + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "ID": 68, + "Modified": "2025-04-10T13:42:56Z", + "Created": "2025-02-05T08:15:30Z", + "Author": { + "Email": "gondorian.admin@gondor.me", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 221, + "LookupValue": "Hurin of the Keys" + }, + "Editor": { + "Email": "ioreth@houses.gondor.me", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 356, + "LookupValue": "Ioreth of the Houses of Healing" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 11, + "WorkflowVersion": 1, + "_UIVersion": 1536, + "_UIVersionString": "3.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 100.0, + "GUID": "ef6d4328-fc17-7ed5-1931-g0d7gf98407h", + "WorkflowInstanceID": null, + "FileRef": "/Teams/citadel-command/Lists/Systemoversigt/68_.000", + "FileDirRef": "/Teams/citadel-command/Lists/Systemoversigt", + "Last_x0020_Modified": "2025-04-10T13:42:56Z", + "Created_x0020_Date": "2025-02-05T08:15:30Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 1, + "LookupValue": "0", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "FileLeafRef": "68_.000", + "UniqueId": "9d354e6i-47h7-7g91-1d30-7445f2if23ei", + "ParentUniqueId": "{G9808F45-3HI0-7705-EH5D-H75512C0GFE}", + "SyncClientId": { + "LookupId": 1, + "LookupValue": null, + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "ProgId": "", + "ScopeId": "{765H21G0-2578-7H1E-EH57-75DEFD388EGG}", + "MetaInfo": "", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "", + "OriginatorId": "", + "NoExecute": "0", + "ContentVersion": "0", + "_ComplianceFlags": "", + "_ComplianceTag": "", + "_ComplianceTagWrittenTime": "", + "_ComplianceTagUserId": "", + "AccessPolicy": "", + "_VirusStatus": "", + "_VirusVendorID": "", + "_VirusInfo": "", + "_RansomwareAnomalyMetaInfo": "", + "_DraftOwnerId": "", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 65280, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "SMLastModifiedDate": "2025-04-10T13:42:56Z", + "SMTotalFileStreamSize": "0", + "SMTotalFileCount": { + "LookupId": 0, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "_CommentFlags": "", + "_CommentCount": "" + }, + { + "Overf_x00f8_rt_x0020_til_x0020_K": null, + "Title": "Elven Knowledge Repository", + "Kaldenavn": "EKR", + "Beskrivelse": "
Comprehensive archive for
storing and retrieving ancient knowledge and lore
of the Elven peoples
", + "Systemejerskab": "MSB-Elven Council: Knowledge Preservation", + "Systemejerskab_x0020__x002d__x00": "Archives", + "Systemejer2": [ + { + "Email": "erestor@rivendell.me", + "TypeId": "{a843cb51f8b7d2c19a5ec96f42718e}", + "LookupId": 154, + "LookupValue": "Erestor of Rivendell" + } + ], + "System_x0020_stedfortr_x00e6_der": [ + { + "Email": "glorfindel@rivendell.me", + "TypeId": "{b723ab43c9ef3d18b4f7c85e31629d}", + "LookupId": 118, + "LookupValue": "Glorfindel of Rivendell" + } + ], + "Intern_x0020_driftsansvarlig2": [ + { + "Email": "lindir@rivendell.me", + "TypeId": "{c956ab54c16bd4c1889d2996f57282}", + "LookupId": 183, + "LookupValue": "Lindir of Rivendell" + } + ], + "Ekstern_x0020_driftsansvarlig": "
Support available through all seasons via:
", + "Systemleverand_x00f8_r": "
Noldorian Knowledge Systems
", + "Urgency_x0020_rating": "Heritage Critical Service", + "Antal_x0020_brugere": "> 300", + "Teknisk_x0020_dokumentation2": { + "Description": "Ancient Architecture Documentation", + "Url": "https://elvenrealms.sharepoint.com/Teams/elven-council/EKR/Technical", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Interne_x0020_systemafh_x00e6_ng": [ + { + "LookupId": 167, + "LookupValue": "Elven Translation System", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + } + ], + "Systemafh_x00e6_ngigheder_x0020_": [], + "Eksterne_x0020_systemafh_x00e6_n": "

Integration with Valinor Historical Archives

", + "Kommentarer": "

Migration to Undying Lands platform planned for Q4 2025

", + "Servernavne": null, + "Brugervejledninger": { + "Description": "Scholar's Access Guide", + "Url": "https://elvenrealms.sharepoint.com/Teams/elven-council/EKR/Guides", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Superbrugerorganisation": { + "Description": "Lore Masters Circle", + "Url": "https://elvenrealms.sharepoint.com/Teams/lore-masters/Members", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "IT_x002d_sikkerheds_x0020_katego": "Med historiske hemmeligheder", + "Intern_x0020_IT_x002d_Sikkerheds": { + "Description": "Ancient Knowledge Protection Protocols", + "Url": "https://elvenrealms.sharepoint.com/Teams/security/Documents/EKR-Security", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontrakt_x0020_beskrivelse": { + "Description": "Elven Council Charter", + "Url": "https://elvenrealms.sharepoint.com/Teams/contracts/EKR-Charter", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontraktudl_x00f8_bsdato": "2025-08-15T00:00:00Z", + "Udbudstype": "High Council Selection", + "End_x002d_of_x002d_Life": "2025-12-15T00:00:00Z", + "End_x002d_of_x002d_Life_x0020_be": "Migration to Undying Lands system", + "Arkivering": "Systemet er i drift, under beskyttelse", + "Open_x0020_Data": "delvist", + "Open_x0020_Source_x0020_system": "Delvist", + "Digital_x0020_post": "Ja", + "Systemkategori": [ + "Knowledge", + "Archives", + "Heritage" + ], + "Tilg_x00e6_ngelighedserkl_x00e6_": "Godkendt", + "Antal_x0020_digitale_x0020_trans": "20000", + "Antal_x0020_totale_x0020_transak": "25000", + "Selvbetjenings_x002d_URL": "https://knowledge.elvenrealms.me", + "Selvbetjening_x0020_tilg_x00e6_n": [ + "crystal", + "scroll", + "mirror" + ], + "Loginmetoder": "Elven Mind Authentication", + "F_x00e6_llesbegreb": [ + "Knowledge", + "History", + "Lore" + ], + "Software_x0020_pakke": "Celebrimbor Knowledge Suite", + "Versions_x0020_nummer_x002f_rele": "v5.7.3", + "LikesCount": null, + "ContentTypeId": { + "StringValue": "0x01004C8D264DE7164D4ABF2189003B5EB697", + "TypeId": "{da0f1e90-296f-480e-bc27-cefe51eff241}" + }, + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "ID": 85, + "Modified": "2025-06-18T10:35:42Z", + "Created": "2025-03-07T13:20:55Z", + "Author": { + "Email": "arwen@rivendell.me", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 245, + "LookupValue": "Arwen Undómiel" + }, + "Editor": { + "Email": "celeborn@lothlorien.me", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 412, + "LookupValue": "Celeborn of Lothlorien" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 15, + "WorkflowVersion": 1, + "_UIVersion": 1536, + "_UIVersionString": "3.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 100.0, + "GUID": "gh7e5439-gd28-8fe6-2042-h1e8hg09518i", + "WorkflowInstanceID": null, + "FileRef": "/Teams/elven-council/Lists/Systemoversigt/85_.000", + "FileDirRef": "/Teams/elven-council/Lists/Systemoversigt", + "Last_x0020_Modified": "2025-06-18T10:35:42Z", + "Created_x0020_Date": "2025-03-07T13:20:55Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 1, + "LookupValue": "0", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "FileLeafRef": "85_.000", + "UniqueId": "0e465f7j-58i8-8h02-2e41-8556g3jg34fj", + "ParentUniqueId": "{H0919G56-4IJ1-8816-FI6E-I86623D1HGF}", + "SyncClientId": { + "LookupId": 1, + "LookupValue": null, + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "ProgId": "", + "ScopeId": "{876I32H1-3689-8I2F-FI68-86EFGE499FHH}", + "MetaInfo": "", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "", + "OriginatorId": "", + "NoExecute": "0", + "ContentVersion": "0", + "_ComplianceFlags": "", + "_ComplianceTag": "", + "_ComplianceTagWrittenTime": "", + "_ComplianceTagUserId": "", + "AccessPolicy": "", + "_VirusStatus": "", + "_VirusVendorID": "", + "_VirusInfo": "", + "_RansomwareAnomalyMetaInfo": "", + "_DraftOwnerId": "", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 72340, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "SMLastModifiedDate": "2025-06-18T10:35:42Z", + "SMTotalFileStreamSize": "0", + "SMTotalFileCount": { + "LookupId": 0, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "_CommentFlags": "", + "_CommentCount": "" + }, + { + "Overf_x00f8_rt_x0020_til_x0020_K": null, + "Title": "Rohan Rider Management System", + "Kaldenavn": "RRMS", + "Beskrivelse": "
Comprehensive platform for
coordinating horsemen and cavalry operations
across the kingdom of Rohan
", + "Systemejerskab": "MKB-Royal Stables: Cavalry Operations", + "Systemejerskab_x0020__x002d__x00": "Military", + "Systemejer2": [ + { + "Email": "theoden@rohan.me", + "TypeId": "{a843cb51f8b7d2c19a5ec96f42718e}", + "LookupId": 167, + "LookupValue": "Théoden King" + } + ], + "System_x0020_stedfortr_x00e6_der": [ + { + "Email": "eomer@rohan.me", + "TypeId": "{b723ab43c9ef3d18b4f7c85e31629d}", + "LookupId": 103, + "LookupValue": "Éomer Marshal" + } + ], + "Intern_x0020_driftsansvarlig2": [ + { + "Email": "gamling@rohan.me", + "TypeId": "{c956ab54c16bd4c1889d2996f57282}", + "LookupId": 178, + "LookupValue": "Gamling of Rohan" + } + ], + "Ekstern_x0020_driftsansvarlig": "
Support available from sunrise to sunset via:
", + "Systemleverand_x00f8_r": "
Edoras Technical Solutions
", + "Urgency_x0020_rating": "Cavalry Critical Service", + "Antal_x0020_brugere": "> 800", + "Teknisk_x0020_dokumentation2": { + "Description": "Cavalry System Documentation", + "Url": "https://rohan.sharepoint.com/Teams/royal-stables/RRMS/Technical", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Interne_x0020_systemafh_x00e6_ng": [ + { + "LookupId": 142, + "LookupValue": "Horse Registry System", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + } + ], + "Systemafh_x00e6_ngigheder_x0020_": [], + "Eksterne_x0020_systemafh_x00e6_n": "

Integration with Gondorian warning beacons

", + "Kommentarer": "

Eastfold patrol module scheduled for deployment in Q2 2025

", + "Servernavne": null, + "Brugervejledninger": { + "Description": "Rider's Handbook", + "Url": "https://rohan.sharepoint.com/Teams/royal-stables/RRMS/Manuals", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Superbrugerorganisation": { + "Description": "Marshal's Council", + "Url": "https://rohan.sharepoint.com/Teams/marshals-council/RRMS/Admins", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "IT_x002d_sikkerheds_x0020_katego": "Med militære ressourcedata", + "Intern_x0020_IT_x002d_Sikkerheds": { + "Description": "Cavalry Security Protocols", + "Url": "https://rohan.sharepoint.com/Teams/security/Documents/RRMS-Security", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontrakt_x0020_beskrivelse": { + "Description": "Royal Commission", + "Url": "https://rohan.sharepoint.com/Teams/contracts/RRMS-Royal-Commission", + "TypeId": "{fa8b44af-7b43-43f2-904a-bd319497011e}" + }, + "Kontraktudl_x00f8_bsdato": "2025-10-10T00:00:00Z", + "Udbudstype": "Royal Decree", + "End_x002d_of_x002d_Life": null, + "End_x002d_of_x002d_Life_x0020_be": null, + "Arkivering": "Systemet er i drift, under mobilisering", + "Open_x0020_Data": "nej", + "Open_x0020_Source_x0020_system": "Nej", + "Digital_x0020_post": "Ja", + "Systemkategori": [ + "Cavalry", + "Military", + "Resource Management" + ], + "Tilg_x00e6_ngelighedserkl_x00e6_": "Godkendt", + "Antal_x0020_digitale_x0020_trans": "35000", + "Antal_x0020_totale_x0020_transak": "40000", + "Selvbetjenings_x002d_URL": "https://riders.rohan.me", + "Selvbetjening_x0020_tilg_x00e6_n": [ + "field-dispatch", + "horn" + ], + "Loginmetoder": "Rohirrim Identification", + "F_x00e6_llesbegreb": [ + "Cavalry", + "Horses", + "Defense" + ], + "Software_x0020_pakke": "Ridemark Command Suite", + "Versions_x0020_nummer_x002f_rele": "v4.1.5", + "LikesCount": null, + "ContentTypeId": { + "StringValue": "0x01004C8D264DE7164D4ABF2189003B5EB697", + "TypeId": "{da0f1e90-296f-480e-bc27-cefe51eff241}" + }, + "_ModerationComments": null, + "File_x0020_Type": null, + "ComplianceAssetId": null, + "_ColorHex": null, + "_ColorTag": null, + "_Emoji": null, + "ID": 93, + "Modified": "2025-07-22T16:40:18Z", + "Created": "2025-04-15T09:10:25Z", + "Author": { + "Email": "eowyn@rohan.me", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 278, + "LookupValue": "Éowyn of Rohan" + }, + "Editor": { + "Email": "hama@rohan.me", + "TypeId": "{c956ab54-16bd-4c18-89d2-996f57282a6f}", + "LookupId": 389, + "LookupValue": "Háma Doorward" + }, + "_HasCopyDestinations": null, + "_CopySource": null, + "owshiddenversion": 14, + "WorkflowVersion": 1, + "_UIVersion": 1536, + "_UIVersionString": "3.0", + "Attachments": false, + "_ModerationStatus": 0, + "InstanceID": null, + "Order": 100.0, + "GUID": "ij8f654a-he39-9gf7-3153-i2f9ih10629j", + "WorkflowInstanceID": null, + "FileRef": "/Teams/royal-stables/Lists/Systemoversigt/93_.000", + "FileDirRef": "/Teams/royal-stables/Lists/Systemoversigt", + "Last_x0020_Modified": "2025-07-22T16:40:18Z", + "Created_x0020_Date": "2025-04-15T09:10:25Z", + "FSObjType": "0", + "SortBehavior": { + "LookupId": 1, + "LookupValue": "0", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "FileLeafRef": "93_.000", + "UniqueId": "1f576g8k-69j9-9i13-3f52-9667h4kh45gk", + "ParentUniqueId": "{I1030H67-5JK2-9927-GJ7F-J97734E2IGH}", + "SyncClientId": { + "LookupId": 1, + "LookupValue": null, + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "ProgId": "", + "ScopeId": "{987J43I2-4790-9J3G-GJ79-97FGHF500GII}", + "MetaInfo": "", + "_Level": 1, + "_IsCurrentVersion": true, + "ItemChildCount": "0", + "FolderChildCount": "0", + "Restricted": "", + "OriginatorId": "", + "NoExecute": "0", + "ContentVersion": "0", + "_ComplianceFlags": "", + "_ComplianceTag": "", + "_ComplianceTagWrittenTime": "", + "_ComplianceTagUserId": "", + "AccessPolicy": "", + "_VirusStatus": "", + "_VirusVendorID": "", + "_VirusInfo": "", + "_RansomwareAnomalyMetaInfo": "", + "_DraftOwnerId": "", + "AppAuthor": null, + "AppEditor": null, + "SMTotalSize": { + "LookupId": 83460, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "SMLastModifiedDate": "2025-07-22T16:40:18Z", + "SMTotalFileStreamSize": "0", + "SMTotalFileCount": { + "LookupId": 0, + "LookupValue": "", + "TypeId": "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}" + }, + "_CommentFlags": "", + "_CommentCount": "" + } +] diff --git a/src/Service/BaseImporter.php b/src/Service/BaseImporter.php index 9dc9ad1..96b530a 100644 --- a/src/Service/BaseImporter.php +++ b/src/Service/BaseImporter.php @@ -6,6 +6,7 @@ use App\Repository\ReportRepository; use App\Repository\SystemRepository; use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; abstract class BaseImporter implements ImportInterface { @@ -16,8 +17,9 @@ public function __construct( protected SystemRepository $systemRepository, protected GroupRepository $groupRepository, protected EntityManagerInterface $entityManager, + protected ParameterBagInterface $params, ) { - $this->url = getenv('SYSTEM_URL'); + $this->url = $this->params->get('system_url') ?? ''; } protected function sanitizeText(string $str): ?string @@ -30,6 +32,34 @@ protected function sanitizeText(string $str): ?string return $str; } + /** + * @param array|null $list + * + * @return string|null + */ + protected function convertList(?array $list): ?string + { + if ($list) { + return implode(', ', $list); + } + + return ''; + } + + /** + * @param $obj + * + * @return string|null + */ + protected function convertLink(?object $obj): ?string + { + if ($obj && $obj->Url && $obj->Description) { + return ''.$obj->Description.''; + } + + return ''; + } + /** * @throws \Exception */ @@ -38,6 +68,16 @@ protected function convertDate(string $date): \DateTime return new \DateTime($date); } + /** + * @param array $systemOwner + * + * @return string + */ + protected function convertSystemOwner(array $systemOwner): string + { + return $systemOwner[0]->LookupValue ?? ''; + } + protected function convertBoolean(string $str): bool { return 'true' == $str; diff --git a/src/Service/ReportImporter.php b/src/Service/ReportImporter.php index 9d86763..8c24924 100644 --- a/src/Service/ReportImporter.php +++ b/src/Service/ReportImporter.php @@ -9,8 +9,6 @@ class ReportImporter extends BaseImporter { public function import(string $src, ?ProgressBar $progressBar = null): void { - $systemURL = getenv('SYSTEM_URL'); - $json = file_get_contents($src); $entries = json_decode($json); @@ -25,61 +23,59 @@ public function import(string $src, ?ProgressBar $progressBar = null): void $sysInternalIds = []; foreach ($entries as $entry) { - $sysInternalId = (int) $this->sanitizeText($entry->{'Id'}); + $sysInternalId = (int) $this->sanitizeText($entry->{'ID'}); $sysInternalIds[] = $sysInternalId; $report = $this->reportRepository->findOneBy(['sysInternalId' => $sysInternalId]); if (!$report) { $report = new Report(); - $report->setSysId($entry->{'Id'}); - $report->setName($this->sanitizeText($entry->{'Titel'})); + $report->setSysId($entry->{'ID'}); + $report->setName($this->sanitizeText($entry->{'Title'})); $this->entityManager->persist($report); } // Un-archive the report. $report->setArchivedAt(null); - $report->setSysId($entry->{'Id'}); + $report->setSysId($entry->{'ID'}); $report->setSysInternalId($sysInternalId); - - $report->setSysUpdated($this->convertDate($entry->{'Ændret'})); - $report->setSysTitle($this->sanitizeText($entry->{'Titel'})); - - $report->setSysLink($systemURL.'/'.$entry->{'Sti'}.'/DispForm.aspx?ID='.$entry->{'Id'}); - - $report->setSysConfidentialInformation($this->convertBoolean($entry->{'Følsomme personoplysninger'})); - $report->setSysAlternativeTitle($this->sanitizeText($entry->{'Systemnavn'} ?? '')); - $report->setSysOwner($this->sanitizeText($entry->{'Systemejerskab'})); - $report->setSysPurpose($this->sanitizeText($entry->{'Formål'})); - $report->setSysClassification($this->sanitizeText($entry->{'Systemets klassifikation'})); - // @TODO: $report->setSysDateForRevision($this->convertDate($entry->{'Dato for revision'})); - $report->setSysPersons($this->sanitizeText($entry->{'Personkreds'})); - $report->setSysInformationTypes($this->sanitizeText($entry->{'Oplysningstyper'})); - $report->setSysDataSentTo($this->sanitizeText($entry->{'Hvor overføres data til?'} ?? '')); - $report->setSysDataComeFrom($this->sanitizeText($entry->{'Hvor kommer data fra?'})); - $report->setSysDataLocation($this->sanitizeText($entry->{'Placering af data'})); - $report->setSysLatestDeletionDate($this->sanitizeText($entry->{'Sletning'})); - $report->setSysDataProcessors($this->sanitizeText($entry->{'Databehandler'})); - $report->setSysDataProcessingAgreement($this->sanitizeText($entry->{'Databehandleraftale/fortrolighedsaftale'} ?? '')); - $report->setSysDataProcessingAgreementLink($this->sanitizeText($entry->{'Link til databehandleraftale/fortrolighedsaftale'} ?? '')); - $report->setSysAuditorStatement($this->sanitizeText($entry->{'Revisorerklæring/tilsyn'})); - $report->setSysAuditorStatementLink($this->sanitizeText($entry->{'Link til revisorerklæring'} ?? '')); - $report->setSysUsage($this->sanitizeText($entry->{'Systembrug'})); - // @TODO: $report->setSysRequestForInsight($this->sanitizeText($entry->{'Anmodning om indsigt'})); - $report->setSysDateUse($this->convertDate($entry->{'Ibrugtagning'})); - $report->setSysStatus($this->sanitizeText($entry->{'Status'})); - $report->setSysRemarks($this->sanitizeText($entry->{'Bemærkninger'})); - $report->setSysObligationToInform($this->sanitizeText($entry->{'Oplysningspligten'})); - $report->setSysLegalBasis($this->sanitizeText($entry->{'Retligt grundlag'})); - $report->setSysConsent($this->sanitizeText($entry->{'Samtykke'})); - $report->setSysImpactAnalysis($this->sanitizeText($entry->{'Konsekvensanalyse'})); - // @TODO: $report->setSysImpactAnalysisLink($this->sanitizeText($entry->{'Link til konsekvensanalyse'})); - $report->setSysAuthorizationProcedure($this->sanitizeText($entry->{'Autorisationsprocedure'})); - $report->setSysInternalInformation($this->sanitizeText($entry->{'Indsigt - interne oplysninger'} ?? '')); - $report->setSysDataWorthSaving($this->sanitizeText($entry->{'Indeholder systemet bevaringsværdige data?'})); - $report->setSysDataToScience($this->sanitizeText($entry->{'Videregivelse af oplysninger til forskning'})); - - $report->setSysSystemOwner($this->sanitizeText($entry->{'Systemejer/projektejer'} ?? '')); + $report->setSysUpdated($this->convertDate($entry->{'Modified'})); + $report->setSysTitle($this->sanitizeText($entry->{'Title'})); + $report->setSysLink($this->url.$entry->{'FileDirRef'}.'/DispForm.aspx?ID='.$entry->{'ID'}); + $report->setSysConfidentialInformation($this->convertBoolean($entry->{'Fortrolige_x0020_oplysninger'} ?? '')); + $report->setSysAlternativeTitle($this->sanitizeText($entry->{'Title'} ?? '')); + $report->setSysOwner($this->sanitizeText($entry->{'Systemejerskab2'} ?? '')); + $report->setSysPurpose($this->sanitizeText($entry->{'Form_x00e5_l'} ?? '')); + $report->setSysClassification($this->sanitizeText($entry->{'Systemets_x0020_klassifikation_x'} ?? '')); + $report->setSysDateForRevision($this->convertDate($entry->{'Dato_x0020_for_x0020_revision'} ?? '')); + $report->setSysPersons($this->sanitizeText($entry->{'Personkreds'} ?? '')); + $report->setSysInformationTypes($this->sanitizeText($entry->{'Oplysningstyper'} ?? '')); + $report->setSysDataSentTo($this->sanitizeText($entry->{'Interne_x0020_systemafh_x00e6_ng'} ?? '')); + $report->setSysDataComeFrom($this->sanitizeText($entry->{'Eksterne_x0020_systemafh_x00e6_n'} ?? '')); + $report->setSysDataLocation($this->sanitizeText($entry->{'Placering_x0020_af_x0020_data'} ?? '')); + $report->setSysLatestDeletionDate($this->sanitizeText($entry->{'Hvorn_x00e5_r_x0020_slettes_x002'} ?? '')); + $report->setSysDataProcessors($this->sanitizeText($entry->{'Databehandler'} ?? '')); + $report->setSysDataProcessingAgreement($this->sanitizeText($entry->{'Er_x0020_der_x0020_indg_x00e5_et'} ?? '')); + $report->setSysDataProcessingAgreementLink($this->sanitizeText($entry->{'Link_x0020_til_x0020_databehandl'} ?? '')); + $report->setSysAuditorStatement($this->sanitizeText($entry->{'Revisorerkl_x00e6_ring'} ?? '')); + $report->setSysAuditorStatementLink($this->sanitizeText($entry->{'Link_x0020_til_x0020_revisorerkl'} ?? '')); + $report->setSysUsage($this->sanitizeText($entry->{'Systembrug'} ?? '')); + $report->setSysRequestForInsight($this->sanitizeText($entry->{'Anmodning_x0020_om_x0020_indsigt'} ?? '')); + $report->setSysDateUse($this->convertDate($entry->{'Ibrugtagning'} ?? '')); + $report->setSysStatus($this->sanitizeText($entry->{'Status_x0020_2'} ?? '')); + $report->setSysRemarks($this->sanitizeText($entry->{'Bem_x00e6_rkninger'} ?? '')); + $report->setSysObligationToInform($this->sanitizeText($entry->{'Oplysningspligten'} ?? '')); + $report->setSysLegalBasis($this->sanitizeText($entry->{'Retligt_x0020_grundlag'} ?? '')); + $report->setSysConsent($this->sanitizeText($entry->{'Samtykke'} ?? '')); + $report->setSysImpactAnalysis($this->sanitizeText($entry->{'Konsekvensanalyse'} ?? '')); + $report->setSysImpactAnalysisLink($this->sanitizeText($entry->{'Link_x0020_til_x0020_konsekvensa'} ?? '')); + $report->setSysAuthorizationProcedure($this->sanitizeText($entry->{'Autorisationsprocedure'} ?? '')); + $report->setSysInternalInformation($this->sanitizeText($entry->{'Indsigt_x0020__x002d__x0020_inte'} ?? '')); + $report->setSysDataWorthSaving($this->sanitizeText($entry->{'Bevaringsv_x00e6_rdige_x0020_dat'} ?? '')); + $report->setSysDataToScience($this->sanitizeText($entry->{'Videregivelse_x0020_af_x0020_opl'} ?? '')); + + // @todo Handle array of objects + $report->setSysSystemOwner($this->convertSystemOwner($entry->{'Systemejer2'} ?? '')); // Set group and subGroup. if (!is_null($report->getSysOwner())) { diff --git a/src/Service/SystemImporter.php b/src/Service/SystemImporter.php index c264a8b..adb1d0e 100644 --- a/src/Service/SystemImporter.php +++ b/src/Service/SystemImporter.php @@ -9,6 +9,7 @@ use App\Repository\SystemRepository; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Console\Helper\ProgressBar; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; class SystemImporter extends BaseImporter { @@ -18,14 +19,13 @@ public function __construct( GroupRepository $groupRepository, private readonly SelfServiceAvailableFromItemRepository $selfServiceAvailableFromItemRepository, EntityManagerInterface $entityManager, + protected ParameterBagInterface $params, ) { - parent::__construct($reportRepository, $systemRepository, $groupRepository, $entityManager); + parent::__construct($reportRepository, $systemRepository, $groupRepository, $entityManager, $params); } public function import(string $src, ?ProgressBar $progressBar = null): void { - $systemURL = getenv('SYSTEM_URL'); - $json = file_get_contents($src); $entries = json_decode($json); @@ -40,57 +40,58 @@ public function import(string $src, ?ProgressBar $progressBar = null): void $sysInternalIds = []; foreach ($entries as $entry) { - $sysInternalId = (int) $this->sanitizeText($entry->{'Id'}); + $sysInternalId = (int) $this->sanitizeText($entry->{'ID'}); $sysInternalIds[] = $sysInternalId; - $system = $this->systemRepository->findOneBy(['sysInternalId' => $entry->{'Id'}]); + $system = $this->systemRepository->findOneBy(['sysInternalId' => $entry->{'ID'}]); if (!$system) { $system = new System(); - $system->setName($this->sanitizeText($entry->{'Titel'})); + $system->setName($this->sanitizeText($entry->{'Title'})); $this->entityManager->persist($system); } // Un-archive the system. $system->setArchivedAt(); - $system->setSysId($entry->{'Id'}); + $system->setSysId($entry->{'ID'}); $system->setSysInternalId($sysInternalId); - $system->setSysUpdated($this->convertDate($entry->{'Ændret'})); - $system->setSysTitle($this->sanitizeText($entry->{'Titel'})); - - $system->setSysLink($systemURL.'/'.$entry->{'Sti'}.'/DispForm.aspx?ID='.$entry->{'Id'}); - - $system->setSysAlternativeTitle($this->sanitizeText($entry->{'Kaldenavn'})); - $system->setSysDescription($this->sanitizeText($entry->{'Beskrivelse'})); - $system->setSysOwner($this->sanitizeText($entry->{'Systemejerskab'})); - $system->setSysOwnerSubdepartment($this->sanitizeText($entry->{'Systemejerskab - underafdeling'})); - $system->setSysEmergencySetup($this->sanitizeText($entry->{'Driftsberedskab'})); - $system->setSysContractor($this->sanitizeText($entry->{'Systemleverandør'})); - $system->setSysUrgencyRating($this->sanitizeText($entry->{'Urgency rating'})); - $system->setSysNumberOfUsers($this->sanitizeText($entry->{'Antal brugere'})); - $system->setSysTechnicalDocumentation($this->sanitizeText($entry->{'Teknisk dokumentation'})); - $system->setSysExternalDependencies($this->sanitizeText($entry->{'Eksterne systemafhængigheder'})); - $system->setSysImportantInformation($this->sanitizeText($entry->{'Vigtige supplerende oplysninger'})); - $system->setSysEmergencySetup($this->sanitizeText($entry->{'Driftsberedskab'})); - $system->setSysSuperuserOrganization($this->sanitizeText($entry->{'Superbrugerorganisation'})); - $system->setSysITSecurityCategory($this->sanitizeText($entry->{'IT-sikkerhedskategori'})); - $system->setSysLinkToSecurityReview($this->sanitizeText($entry->{'Link til sikkerhedsanmeldelse'})); - $system->setSysLinkToContract($this->sanitizeText($entry->{'Link til kontrakt'})); - $system->setSysEndOfContract($this->convertDate($entry->{'Kontraktudløbsdato'})); - $system->setSysOpenData($this->sanitizeText($entry->{'Open Data'})); - $system->setSysOpenSource($this->sanitizeText($entry->{'Open Source'})); - $system->setSysDigitalPost($this->sanitizeText($entry->{'Digital post'})); - $system->setSysSystemCategory($this->sanitizeText($entry->{'Systemkategori'})); - $system->setSysDigitalTransactionsPrYear($this->sanitizeText($entry->{'Antal digitale transaktioner pr. år'})); - $system->setSysTotalTransactionsPrYear($this->sanitizeText($entry->{'Antal totale transaktioner pr. år'})); - $system->setSysSelfServiceURL($this->sanitizeText($entry->{'Selvbetjenings-URL'})); - $system->setSysVersion($this->sanitizeText($entry->{'Versions nummer/release nummer'})); - $system->setSysStatus($this->sanitizeText($entry->{'Status'})); - $system->setSysSystemOwner($this->sanitizeText($entry->{'Systemejer'})); - - $selfServiceAvailableFromText = $this->sanitizeText($entry->{'Selvbetjening tilgængelig fra'}); + $system->setSysUpdated($this->convertDate($entry->{'Modified'})); + $system->setSysTitle($this->sanitizeText($entry->{'Title'})); + + $system->setSysLink($this->url.$entry->{'FileDirRef'}.'/DispForm.aspx?ID='.$entry->{'ID'}); + + $system->setSysAlternativeTitle($this->sanitizeText($entry->{'Kaldenavn'} ?? '')); + $system->setSysDescription($this->sanitizeText($entry->{'Beskrivelse'} ?? '')); + $system->setSysOwner($this->sanitizeText($entry->{'Systemejerskab'} ?? '')); + $system->setSysOwnerSubdepartment($this->sanitizeText($entry->{'Systemejerskab_x0020__x002d__x00'} ?? '')); + $system->setSysEmergencySetup($this->sanitizeText($entry->{'Ekstern_x0020_driftsansvarlig'} ?? '')); + $system->setSysContractor($this->sanitizeText($entry->{'Systemleverand_x00f8_r'} ?? '')); + $system->setSysUrgencyRating($this->sanitizeText($entry->{'Urgency_x0020_rating'} ?? '')); + $system->setSysNumberOfUsers($this->sanitizeText($entry->{'Antal_x0020_brugere'} ?? '')); + $system->setSysTechnicalDocumentation($this->convertLink($entry->{'Teknisk_x0020_dokumentation2'} ?? null)); + $system->setSysExternalDependencies($this->sanitizeText($entry->{'Eksterne_x0020_systemafh_x00e6_n'} ?? '')); + $system->setSysImportantInformation($this->sanitizeText($entry->{'Kommentarer'} ?? '')); + $system->setSysEmergencySetup($this->sanitizeText($entry->{'Ekstern_x0020_driftsansvarlig'} ?? '')); + $system->setSysSuperuserOrganization($this->convertLink($entry->{'Superbrugerorganisation'} ?? null)); + $system->setSysITSecurityCategory($this->sanitizeText($entry->{'IT_x002d_sikkerheds_x0020_katego'} ?? '')); + $system->setSysSuperuserOrganization($this->convertLink($entry->{'Superbrugerorganisation'} ?? null)); + $system->setSysLinkToSecurityReview($this->convertLink($entry->{'Intern_x0020_IT_x002d_Sikkerheds'} ?? null)); + $system->setSysLinkToContract($this->convertLink($entry->{'Kontrakt_x0020_beskrivelse'} ?? null)); + $system->setSysEndOfContract($this->convertDate($entry->{'Kontraktudl_x00f8_bsdato'} ?? '')); + $system->setSysOpenData($this->sanitizeText($entry->{'Open_x0020_Data'} ?? '')); + $system->setSysOpenSource($this->sanitizeText($entry->{'Open_x0020_Source_x0020_system'} ?? '')); + $system->setSysDigitalPost($this->sanitizeText($entry->{'Digital_x0020_post'} ?? '')); + $system->setSysSystemCategory($this->sanitizeText(isset($entry->{'Systemkategori'}) ? $entry->{'Systemkategori'}[0] : '')); + $system->setSysDigitalTransactionsPrYear($this->sanitizeText($entry->{'Antal_x0020_digitale_x0020_trans'} ?? '')); + $system->setSysTotalTransactionsPrYear($this->sanitizeText($entry->{'Antal_x0020_totale_x0020_transak'} ?? '')); + $system->setSysSelfServiceURL($this->sanitizeText($entry->{'Selvbetjenings_x002d_URL'} ?? '')); + $system->setSysVersion($this->sanitizeText($entry->{'Versions_x0020_nummer_x002f_rele'} ?? '')); + $system->setSysStatus($this->sanitizeText($entry->{'Arkivering'} ?? '')); + $system->setSysSystemOwner($this->convertSystemOwner($entry->{'Systemejer2'} ?? '')); + + $selfServiceAvailableFromText = $this->convertList($entry->{'Selvbetjening_x0020_tilg_x00e6_n'} ?? null); if (isset($selfServiceAvailableFromText)) { $selfServiceAvailableFromTitles = preg_split('/;#/', $selfServiceAvailableFromText, -1, PREG_SPLIT_NO_EMPTY); diff --git a/symfony.lock b/symfony.lock index 0603007..86105f5 100644 --- a/symfony.lock +++ b/symfony.lock @@ -1,4 +1,13 @@ { + "doctrine/deprecations": { + "version": "1.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "87424683adc81d7dc305eefec1fced883084aab9" + } + }, "doctrine/doctrine-bundle": { "version": "2.8", "recipe": { @@ -13,6 +22,18 @@ "src/Repository/.gitignore" ] }, + "doctrine/doctrine-fixtures-bundle": { + "version": "4.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.0", + "ref": "1f5514cfa15b947298df4d771e694e578d4c204d" + }, + "files": [ + "src/DataFixtures/AppFixtures.php" + ] + }, "doctrine/doctrine-migrations-bundle": { "version": "3.2", "recipe": {