RED-4753: Reduced size of TEXT File migration

This commit is contained in:
deiflaender 2022-07-26 16:46:11 +02:00
parent 438a2a1ac2
commit d7c2b73909
36 changed files with 87479 additions and 57764 deletions

View File

@ -1,27 +1,25 @@
package com.iqser.red.service.peristence.v1.server.migration;
import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.MigrationPersistenceService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.Comparator;
import java.util.List;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.List;
import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.MigrationPersistenceService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RequiredArgsConstructor
public class MigrationStarterService {
// This should always be the latest migration version (2), but as 3.2.x does not have this, currently it is 1.
// After migration to 3.3.x we must fix this.
public static final long MIGRATION_SEED_VERSION = 8;
private final List<Migration> migrations;
private final FileManagementServiceSettings settings;
private final ApplicationContext ctx;
@ -53,7 +51,8 @@ public class MigrationStarterService {
private void seedMigration() {
if (migrationPersistenceService.getLatestProcessedVersion() == null) {
migrationPersistenceService.insertMigration("migration start version", MIGRATION_SEED_VERSION);
migrations.sort(Comparator.comparing(Migration::getVersion).reversed());
migrationPersistenceService.insertMigration("migration start version", migrations.get(0).getVersion());
}
}

View File

@ -0,0 +1,81 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.iqser.red.service.peristence.v1.server.migration.Migration;
import com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext.Text;
import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType;
import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist;
import com.iqser.red.storage.commons.service.StorageService;
import lombok.Setter;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Setter
@Service
public class ReduceTextFileSizeMigration10 extends Migration {
private static final String NAME = "Reduce TEXT filesize migration";
private static final long VERSION = 10;
@Autowired
private DossierPersistenceService dossierPersistenceService;
@Autowired
private FileStatusPersistenceService fileStatusPersistenceService;
@Autowired
private StorageService storageService;
public ReduceTextFileSizeMigration10() {
super(NAME, VERSION);
}
@Override
protected void migrate() {
var dossiers = dossierPersistenceService.findAllDossiers();
dossiers.forEach(dossier -> {
if (dossier.getHardDeletedTime() == null) {
var files = fileStatusPersistenceService.getStatusesForDossier(dossier.getId());
log.info("Start migration of dossier {}", dossier.getId());
files.forEach(file -> {
if (file.getHardDeletedTime() == null) {
log.info("Start migration of file {}", file.getId());
migrateFile(dossier.getId(), file.getId());
log.info("Finished migration of file {}", file.getId());
}
});
log.info("Finished migration of dossier {}", dossier.getId());
}
});
}
@SneakyThrows
public void migrateFile(String dossierId, String fileId) {
try {
var text = storageService.readJSONObject(StorageIdUtils.getStorageId(dossierId, fileId, FileType.TEXT), Text.class);
storageService.storeJSONObject(StorageIdUtils.getStorageId(dossierId, fileId, FileType.TEXT), text);
} catch (StorageObjectDoesNotExist e) {
log.warn("Text not found for dossier {} and file {}, ignoring....", dossierId, fileId);
}
}
}

View File

@ -0,0 +1,52 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext;
import com.dslplatform.json.JsonAttribute;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.redaction.v1.model.Rectangle;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public abstract class AbstractTextContainer {
@JsonIgnore
protected float minX;
@JsonIgnore
protected float maxX;
@JsonIgnore
protected float minY;
@JsonIgnore
protected float maxY;
@JsonIgnore
protected String classification;
@JsonIgnore
protected int page;
public abstract String getText();
public boolean contains(AbstractTextContainer other) {
return this.minX <= other.minX && this.maxX >= other.maxX && this.minY >= other.minY && this.maxY <= other.maxY;
}
public boolean contains(Rectangle other) {
return page == other.getPage() && this.minX <= other.getTopLeft().getX() && this.maxX >= other.getTopLeft().getX() + other.getWidth() && this.minY <= other.getTopLeft().getY() && this.maxY >= other.getTopLeft().getY() + other.getHeight();
}
@JsonIgnore
@JsonAttribute(ignore = true)
public float getHeight() {
return maxY - minY;
}
@JsonIgnore
@JsonAttribute(ignore = true)
public float getWidth() {
return maxX - minX;
}
}

View File

@ -0,0 +1,19 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext;
import java.util.ArrayList;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CellValue {
private List<TextBlock> textBlocks = new ArrayList<>();
private int rowSpanStart;
}

View File

@ -0,0 +1,29 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext;
import com.dslplatform.json.CompiledJson;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@CompiledJson
@NoArgsConstructor
@AllArgsConstructor
public class Image {
private String type;
private RedRectangle2D position;
private boolean redaction;
private String redactionReason;
private String legalBasis;
private int matchedRule;
private int sectionNumber;
private String section;
private int page;
private boolean ignored;
private boolean hasTransparency;
}

View File

@ -0,0 +1,48 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext;
import com.dslplatform.json.CompiledJson;
import com.dslplatform.json.JsonAttribute;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@CompiledJson
@NoArgsConstructor
@AllArgsConstructor
public class RedRectangle2D {
public static final double THRESHOLD = 0.01;
private double x;
private double y;
private double width;
private double height;
@JsonIgnore
@JsonAttribute(ignore = true)
public boolean isEmpty() {
return width <= 0.0f || height <= 0.0f;
}
public boolean contains(double x, double y, double w, double h) {
if (isEmpty() || w <= 0 || h <= 0) {
return false;
}
double x0 = getX();
double y0 = getY();
return round(x) >= round(x0) &&
round(y) >= round(y0) &&
(x + w) - (x0 + getWidth()) <= THRESHOLD &&
(y + h) - (y0 + getHeight()) <= THRESHOLD;
}
private double round(double value) {
double d = Math.pow(10, 2);
return Math.round(value * d) / d;
}
}

View File

@ -0,0 +1,120 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext;
import com.dslplatform.json.CompiledJson;
import com.dslplatform.json.JsonAttribute;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@CompiledJson
public class RedTextPosition {
// Same values
private String textMatrix;
private String unicode;
// New
private float[] position;
// Moved to position
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private float XDirAdj;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private float YDirAdj;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@JsonAttribute
private float heightDir;
@JsonAttribute
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private float widthDirAdj;
// Moved To TextPositionSequence
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@JsonAttribute
private float pageHeight;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@JsonAttribute
private float pageWidth;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@JsonAttribute
private float dir;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@JsonAttribute
private int rotation;
// Removed values
@JsonIgnore
private float y;
@JsonIgnore
private float width;
@JsonAttribute()
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public float[] getPosition() {
var position = new float[4];
position[0] = XDirAdj;
position[1] = YDirAdj;
position[2] = widthDirAdj;
position[3] = heightDir;
return position;
}
@JsonAlias("xdirAdj")
@JsonAttribute(alternativeNames = {"xdirAdj"})
@JsonProperty
public void setXDirAdj(float XDirAdj) {
this.XDirAdj = XDirAdj;}
@JsonAlias("ydirAdj")
@JsonAttribute(alternativeNames = {"ydirAdj"})
@JsonProperty
public void setYDirAdj(float YDirAdj) {this.YDirAdj = YDirAdj;}
@JsonIgnore
public float getXDirAdj() {return this.XDirAdj;}
@JsonIgnore
public float getYDirAdj() {return this.YDirAdj;}
@JsonIgnore
public float getWidthDirAdj() {return this.widthDirAdj;}
@JsonIgnore
public float getHeightDir() {return this.heightDir;}
@JsonIgnore
public float getPageHeight() {return this.pageHeight;}
@JsonIgnore
public float getPageWidth() {return this.pageWidth;}
@JsonIgnore
public int getRotation() {return this.rotation;}
@JsonIgnore
public float getDir() {return this.dir;}
}

View File

@ -0,0 +1,38 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.dslplatform.json.CompiledJson;
import com.iqser.red.service.redaction.v1.model.SectionArea;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@CompiledJson
@NoArgsConstructor
@AllArgsConstructor
public class SectionText {
private int sectionNumber;
private String text;
private boolean isTable;
private String headline;
private List<SectionArea> sectionAreas = new ArrayList<>();
private Set<Image> images = new HashSet<>();
private List<TextBlock> textBlocks = new ArrayList<>();
private Map<String, CellValue> tabularData = new HashMap<>();
private List<Integer> cellStarts = new ArrayList<>();
}

View File

@ -0,0 +1,21 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext;
import java.util.ArrayList;
import java.util.List;
import com.dslplatform.json.CompiledJson;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@CompiledJson
@NoArgsConstructor
@AllArgsConstructor
public class Text {
private int numberOfPages;
private List<SectionText> sectionTexts = new ArrayList<>();
}

View File

@ -0,0 +1,59 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext;
import java.util.ArrayList;
import java.util.List;
import com.dslplatform.json.CompiledJson;
import com.dslplatform.json.JsonAttribute;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@Builder
@Data
@CompiledJson
@NoArgsConstructor
public class TextBlock extends AbstractTextContainer {
@Builder.Default
private List<TextPositionSequence> sequences = new ArrayList<>();
@JsonIgnore
private int rotation;
@JsonIgnore
private String mostPopularWordFont;
@JsonIgnore
private String mostPopularWordStyle;
@JsonIgnore
private float mostPopularWordFontSize;
@JsonIgnore
private float mostPopularWordHeight;
@JsonIgnore
private float mostPopularWordSpaceWidth;
@JsonIgnore
private float highestFontSize;
@JsonIgnore
private String classification;
@Override
@JsonIgnore
@JsonAttribute(ignore = true)
public String getText() {
return null;
}
}

View File

@ -0,0 +1,53 @@
package com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext;
import java.util.ArrayList;
import java.util.List;
import com.dslplatform.json.CompiledJson;
import com.dslplatform.json.JsonAttribute;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Data
@Builder
@CompiledJson
@NoArgsConstructor
@AllArgsConstructor
public class TextPositionSequence {
private int page;
private List<RedTextPosition> textPositions = new ArrayList<>();
// Removed
@JsonIgnore
private float x1;
@JsonIgnore
private float x2;
// Added
private float dir;
private int rotation;
private float pageHeight;
private float pageWidth;
@JsonAttribute
public float getDir() {
return textPositions.get(0).getDir();}
@JsonAttribute
public int getRotation() {return textPositions.get(0).getRotation();}
@JsonAttribute
public float getPageHeight() {return textPositions.get(0).getPageHeight();}
@JsonAttribute
public float getPageWidth() {return textPositions.get(0).getPageWidth();}
}

View File

@ -0,0 +1,46 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import java.io.FileOutputStream;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.peristence.v1.server.integration.utils.OsUtils;
import com.iqser.red.service.peristence.v1.server.migration.migrations.ReduceTextFileSizeMigration10;
import com.iqser.red.service.peristence.v1.server.migration.migrations.model.reducetext.Text;
import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType;
import lombok.SneakyThrows;
public class ReduceFileSizeMigrationTest extends AbstractPersistenceServerServiceTest {
@Autowired
private ReduceTextFileSizeMigration10 reduceTextFileSizeMigration10;
@Autowired
private ObjectMapper objectMapper;
@Test
@SneakyThrows
public void testMapping() {
ClassPathResource responseJson = new ClassPathResource("files/migration/Text.json");
storageService.storeObject(StorageIdUtils.getStorageId("dossierId", "fileId", FileType.TEXT), responseJson.getInputStream());
reduceTextFileSizeMigration10.migrateFile("dossierId", "fileId");
var text = storageService.readJSONObject(StorageIdUtils.getStorageId("dossierId", "fileId", FileType.TEXT), Text.class);
try (FileOutputStream fileOutputStream = new FileOutputStream(OsUtils.getTemporaryDirectory() + "/MigratedText.json")) {
fileOutputStream.write(objectMapper.writeValueAsBytes(text));
}
}
}

View File

@ -0,0 +1,22 @@
package com.iqser.red.service.peristence.v1.server.integration.utils;
import org.apache.commons.lang3.StringUtils;
public class OsUtils {
public static boolean isWindows() {
return StringUtils.containsIgnoreCase(System.getProperty("os.name"), "Windows");
}
public static String getTemporaryDirectory() {
String tmpdir = System.getProperty("java.io.tmpdir");
if (isWindows() && StringUtils.isNotBlank(tmpdir)) {
return tmpdir;
}
return "/tmp";
}
}

View File

@ -1 +0,0 @@
[{"category":"LICENSE","recordCount":28},{"category":"DOWNLOAD","recordCount":2},{"category":"AUDIT_LOG","recordCount":2},{"category":"DOSSIER","recordCount":64},{"category":"DOCUMENT","recordCount":40},{"category":"AUDIT","recordCount":2},{"category":"DOSSIER_TEMPLATE","recordCount":1}]

View File

@ -1,548 +0,0 @@
[
{
"type": "false_positive",
"hexColor": "#ffffff",
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"rank": 1,
"description": null,
"addToDictionaryAction": false,
"label": "False Positive",
"dossierId": "global",
"hint": true,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "formula",
"hexColor": "#036ffc",
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"rank": 1002,
"description": "Empty dictionary used to configure formula colors.",
"addToDictionaryAction": false,
"label": "Formula",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "image",
"hexColor": "#bdd6ff",
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"rank": 999,
"description": "Empty dictionary used to configure image colors.",
"addToDictionaryAction": false,
"label": "Image",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "logo",
"hexColor": "#bdd6ff",
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"rank": 1001,
"description": "Empty dictionary used to configure logo colors.",
"addToDictionaryAction": false,
"label": "Logo",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "ocr",
"hexColor": "#bdd6ff",
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"rank": 1000,
"description": "Empty dictionary used to configure ocr colors.",
"addToDictionaryAction": false,
"label": "Ocr",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "signature",
"hexColor": "#bdd6ff",
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"rank": 1003,
"description": "Empty dictionary used to configure signature colors.",
"addToDictionaryAction": false,
"label": "Signature",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "dossier_redaction",
"hexColor": "#9398a0",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 1500,
"description": "Entries in this dictionary will only be redacted in this dossier",
"addToDictionaryAction": false,
"label": "Dossier Redaction",
"dossierId": "48c10c3e-9831-4165-a80e-6e96ba2c3e98",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "dossier_redaction",
"hexColor": "#9398a0",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 1500,
"description": "Entries in this dictionary will only be redacted in this dossier",
"addToDictionaryAction": false,
"label": "Dossier Redaction",
"dossierId": "b2c9c4e5-5382-4862-9402-5b619c41a68c",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "CBI_address",
"hexColor": "#9398a0",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 140,
"description": "All site names and addresses, and location (e.g. Syngenta, Monthey, GPS Co-ordinates, Mr Smith of … providing the…). Except addresses in published literature and the applicant address.",
"addToDictionaryAction": true,
"label": "CBI Address",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "CBI_author",
"hexColor": "#9398a0",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 130,
"description": "All authors named in the study documentation. Except names in published literature.",
"addToDictionaryAction": true,
"label": "CBI Author",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "PII",
"hexColor": "#9398a0",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 150,
"description": "Not authors but listed in the document: Names, signatures, telephone, email etc.; e.g. Reg Manager, QA Manager",
"addToDictionaryAction": true,
"label": "PII",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "false_positive",
"hexColor": "#ffcece",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 160,
"description": "System managed: Filled automatically by user feedback on false positives",
"addToDictionaryAction": false,
"label": "False Positive",
"dossierId": "global",
"hint": true,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "formula",
"hexColor": "#036ffc",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 1002,
"description": "Empty dictionary used to configure formula colors.",
"addToDictionaryAction": false,
"label": "Formula",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "hint_only",
"hexColor": "#fa98f7",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 50,
"description": "Entries of this dictionary will be highlighted only",
"addToDictionaryAction": false,
"label": "Hint Only",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "image",
"hexColor": "#bdd6ff",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 999,
"description": "Empty dictionary used to configure image colors.",
"addToDictionaryAction": false,
"label": "Image",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "logo",
"hexColor": "#9398a0",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 1001,
"description": "Empty dictionary used to configure logo colors.",
"addToDictionaryAction": false,
"label": "Logo",
"dossierId": "global",
"hint": false,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "must_redact",
"hexColor": "#9398a0",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 100,
"description": "Entries of this dictionary get redacted wherever found.",
"addToDictionaryAction": false,
"label": "Must Redact",
"dossierId": "global",
"hint": false,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "ocr",
"hexColor": "#bdd6ff",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 1000,
"description": "Empty dictionary used to configure ocr colors.",
"addToDictionaryAction": false,
"label": "Ocr",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "published_information",
"hexColor": "#85ebff",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 70,
"description": "Manual managed list of public journals and papers that need no redaction",
"addToDictionaryAction": true,
"label": "Published Information",
"dossierId": "global",
"hint": true,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "recommendation_CBI_address",
"hexColor": "#8df06c",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 30,
"description": "System managed: Automatically detected recommendations for CBI Address",
"addToDictionaryAction": false,
"label": "Recommendation CBI Address",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": true
},
{
"type": "recommendation_CBI_author",
"hexColor": "#8df06c",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 40,
"description": "System managed: Automatically detected recommendations for CBI Author",
"addToDictionaryAction": false,
"label": "Recommendation CBI Author",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": true
},
{
"type": "signature",
"hexColor": "#9398a0",
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"rank": 1003,
"description": "Empty dictionary used to configure signature colors.",
"addToDictionaryAction": false,
"label": "Signature",
"dossierId": "global",
"hint": false,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "dossier_redaction",
"hexColor": "#9398a0",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 1500,
"description": "Entries in this dictionary will only be redacted in this dossier",
"addToDictionaryAction": false,
"label": "Dossier Redaction",
"dossierId": "d46267c1-bb19-44ca-8c0c-60fb5d5309c5",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "CBI_address",
"hexColor": "#9398a0",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 140,
"description": "Laboratory Address: Redaction in combination with vertebrates",
"addToDictionaryAction": true,
"label": "CBI Address",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "CBI_author",
"hexColor": "#9398a0",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 130,
"description": "Study Author: Redaction in combination with vertebrates",
"addToDictionaryAction": true,
"label": "CBI Author",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "CBI_sponsor",
"hexColor": "#9398a0",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 120,
"description": "Batch Sponsor: Redaction in combination with 'batches produced at'",
"addToDictionaryAction": true,
"label": "CBI Sponsor",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "PII",
"hexColor": "#9398a0",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 150,
"description": "Personal Identification Information: Redact name, email, phone, fax, ... of employees",
"addToDictionaryAction": true,
"label": "PII",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "false_positive",
"hexColor": "#ffcece",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 160,
"description": "System managed: Filled automatically by user feedback on false positives",
"addToDictionaryAction": false,
"label": "False Positive",
"dossierId": "global",
"hint": true,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "formula",
"hexColor": "#036ffc",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 1002,
"description": "Empty dictionary used to configure formula colors.",
"addToDictionaryAction": false,
"label": "Formula",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "hint_only",
"hexColor": "#fa98f7",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 50,
"description": "Entries of this dictionary will be highlighted only",
"addToDictionaryAction": false,
"label": "Hint Only",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "image",
"hexColor": "#bdd6ff",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 999,
"description": "Empty dictionary used to configure image colors.",
"addToDictionaryAction": false,
"label": "Image",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "logo",
"hexColor": "#9398a0",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 1001,
"description": "Empty dictionary used to configure logo colors.",
"addToDictionaryAction": false,
"label": "Logo",
"dossierId": "global",
"hint": false,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "must_redact",
"hexColor": "#fa98f7",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 100,
"description": "Forces redaction of CBI Author/Address even if there is no vertebrate",
"addToDictionaryAction": false,
"label": "Must Redact",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "no_redaction_indicator",
"hexColor": "#be85ff",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 80,
"description": "Prevents redaction of CBI Author/Address although there is a vertebrate, e.g. vertebrate and in vitro is found",
"addToDictionaryAction": false,
"label": "No Redaction Indicator",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "ocr",
"hexColor": "#bdd6ff",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 1000,
"description": "Empty dictionary used to configure ocr colors.",
"addToDictionaryAction": false,
"label": "Ocr",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "published_information",
"hexColor": "#85ebff",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 70,
"description": "Manual managed list of public journals and papers that need no redaction",
"addToDictionaryAction": true,
"label": "Published Information",
"dossierId": "global",
"hint": true,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "recommendation_CBI_address",
"hexColor": "#8df06c",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 30,
"description": "System managed: Automatically detected recommendations for CBI Address",
"addToDictionaryAction": false,
"label": "Recommendation CBI Address",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": true
},
{
"type": "recommendation_CBI_author",
"hexColor": "#8df06c",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 40,
"description": "System managed: Automatically detected recommendations for CBI Author",
"addToDictionaryAction": false,
"label": "Recommendation CBI Author",
"dossierId": "global",
"hint": false,
"caseInsensitive": false,
"recommendation": true
},
{
"type": "redaction_indicator",
"hexColor": "#ff85f7",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 90,
"description": "Forces redaction of CBI Author/Address even if there is a 'No Redaction Indicator', e.g. vertebrate, in vitro, and in vivo is found",
"addToDictionaryAction": false,
"label": "Redaction Indicator",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "signature",
"hexColor": "#9398a0",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 1003,
"description": "Empty dictionary used to configure signature colors.",
"addToDictionaryAction": false,
"label": "Signature",
"dossierId": "global",
"hint": false,
"caseInsensitive": true,
"recommendation": false
},
{
"type": "test_method",
"hexColor": "#91fae8",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 60,
"description": "Manual managed list of Test Methods to disambiguate some CBI Authors like Fisher vs Fisher's Test",
"addToDictionaryAction": false,
"label": "Test Method",
"dossierId": "global",
"hint": true,
"caseInsensitive": false,
"recommendation": false
},
{
"type": "vertebrate",
"hexColor": "#ff85f7",
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"rank": 110,
"description": "List of vertebrates that cause redaction of CBI Author/Address",
"addToDictionaryAction": false,
"label": "Vertebrate",
"dossierId": "global",
"hint": true,
"caseInsensitive": true,
"recommendation": false
}
]

View File

@ -1 +0,0 @@
[{"dossierAttributeId":"2884a75c-9be1-4557-824f-c85e3beca515","value":"Hello World","dossierId":"d46267c1-bb19-44ca-8c0c-60fb5d5309c5"}]

View File

@ -1,50 +0,0 @@
[
{
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"name": "Manual Redaction",
"description": "Only manual redactions.",
"dateAdded": "2021-11-15T13:27:30Z",
"dateModified": "2021-11-16T08:15:57Z",
"createdBy": "ad4c802c-907b-41f2-8afa-9fa37e29c004",
"modifiedBy": "3f928d0d-79af-44b7-9398-294369fe65ac",
"validFrom": null,
"validTo": null,
"downloadFileTypes": [
"PREVIEW",
"REDACTED"
],
"deleted": true
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"name": "EFSA sanitisation GFL v1",
"description": "Redact all authors, laboratory addresses and other geolocation.",
"dateAdded": "2021-11-15T13:26:59Z",
"dateModified": "2021-07-19T08:09:27Z",
"createdBy": "e3aed6ea-a9e5-4f3f-bde7-6f0fe0c4362c",
"modifiedBy": "e3aed6ea-a9e5-4f3f-bde7-6f0fe0c4362c",
"validFrom": null,
"validTo": null,
"downloadFileTypes": [
"PREVIEW",
"REDACTED"
],
"deleted": false
},
{
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"name": "EFSA sanitisation pre GFL v1",
"description": "Redact authors and laboratory addresses in combination with a vertebrate.",
"dateAdded": "2021-11-15T13:24:40Z",
"dateModified": "2021-11-15T13:27:17Z",
"createdBy": "System",
"modifiedBy": null,
"validFrom": null,
"validTo": null,
"downloadFileTypes": [
"PREVIEW",
"REDACTED"
],
"deleted": false
}
]

View File

@ -1 +0,0 @@
[{"dossierId":"48c10c3e-9831-4165-a80e-6e96ba2c3e98","dossierTemplateId":"49156a1f-30cc-412f-8778-eb5bd842d709","dossierName":"Dom2","date":"2021-11-15T13:27:48Z","description":"","status":"ACTIVE","ownerId":"f8960240-9973-42e9-9b0f-ed096ff5a018","memberIds":["f8960240-9973-42e9-9b0f-ed096ff5a018"],"approverIds":["f8960240-9973-42e9-9b0f-ed096ff5a018"],"downloadFileTypes":["PREVIEW","REDACTED"],"reportTypes":[],"dueDate":null,"reportTemplateIds":["e37613cb-e093-49af-ae69-5678148c29b8"],"softDeletedTime":null,"hardDeletedTime":null},{"dossierId":"b2c9c4e5-5382-4862-9402-5b619c41a68c","dossierTemplateId":"49156a1f-30cc-412f-8778-eb5bd842d709","dossierName":"Dom1","date":"2021-11-15T13:27:19Z","description":"","status":"ACTIVE","ownerId":"f8960240-9973-42e9-9b0f-ed096ff5a018","memberIds":["f8960240-9973-42e9-9b0f-ed096ff5a018"],"approverIds":["f8960240-9973-42e9-9b0f-ed096ff5a018"],"downloadFileTypes":["PREVIEW","REDACTED"],"reportTypes":[],"dueDate":null,"reportTemplateIds":["75674b0f-7c70-4903-b30a-2a4aa330b6b1","87553a68-49e7-4bb6-9af7-263dcb81e964","e2eff609-1dbb-4f10-a1a2-de71f03e5875","e37613cb-e093-49af-ae69-5678148c29b8"],"softDeletedTime":null,"hardDeletedTime":null},{"dossierId":"d46267c1-bb19-44ca-8c0c-60fb5d5309c5","dossierTemplateId":"9b7bd575-4566-4408-984f-b26da1d2616e","dossierName":"Dom3","date":"2021-11-15T13:28:31Z","description":"","status":"ACTIVE","ownerId":"f8960240-9973-42e9-9b0f-ed096ff5a018","memberIds":["f8960240-9973-42e9-9b0f-ed096ff5a018"],"approverIds":["f8960240-9973-42e9-9b0f-ed096ff5a018"],"downloadFileTypes":["PREVIEW","REDACTED"],"reportTypes":[],"dueDate":null,"reportTemplateIds":["bb18db9e-2730-403c-90c0-d306aac06284"],"softDeletedTime":null,"hardDeletedTime":null}]

View File

@ -1,243 +0,0 @@
[
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "!BACON",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "#210 South Railway P.O. Box 144 Minto, MB ROK 1MO",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "#93-9017",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "'s-Hertogenbosch, The Netherlands",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "(AMBIS, Inc.",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "(Bray), Wicklow, Ireland",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "(Mobec, Inc.",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "-Nobel-Str. 50, D-40789 Monheim am Rhein",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "/ Agrisearch Italia SRL",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "04827 Gerichshain, Germany",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "06º 04' 32'",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "1 Rue Petits Champs Varennes Sur Loire 49730",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "10/036-001E",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "10/036-002P",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105-141",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105-142",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105-144",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105A-105",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105A-106A",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105A-108",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105A-10i3",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105A-119",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105A-123A",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105A-1C8",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "105A-l06A",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "107 Morgan Lane Plainsboro, NJ 08536",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "107 Morgan Lane Plainsboro, NJ 08536-3339",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "107 Morgan Lane Plainsboro, New Jersey",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "107 Morgan Lane, Plainsboro, NJ 08536",
"version": 2,
"deleted": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"dossierId": "global",
"type": "CBI_address",
"value": "1095 Morris Avenue P.O. Box 3182 Union, NJ 07083-1982",
"version": 2,
"deleted": false
}
]

View File

@ -1,12 +0,0 @@
[
{
"id": "7ea3281320851f12dda397ef35315029",
"user": "f8960240-9973-42e9-9b0f-ed096ff5a018",
"status": "APPROVED",
"legalBasis": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)",
"requestDate": "2021-11-15T13:33:53Z",
"processedDate": null,
"softDeletedTime": null,
"fileId": "a7985c094cac62118c9b350461902f95"
}
]

View File

@ -1,13 +0,0 @@
[
{
"id": "0284267db2bee9fe21fd8aab681664c5",
"user": "f8960240-9973-42e9-9b0f-ed096ff5a018",
"status": "APPROVED",
"legalBasis": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)",
"section": "",
"requestDate": "2021-11-15T13:33:41Z",
"processedDate": null,
"softDeletedTime": null,
"fileId": "a7985c094cac62118c9b350461902f95"
}
]

View File

@ -1,29 +0,0 @@
[
{
"id": "82f1e0aee6c825a0a8519b0f1d812df7",
"user": "f8960240-9973-42e9-9b0f-ed096ff5a018",
"type": "manual",
"value": "Cyprodinil/Dithianon",
"reason": "(Regulations (EU) 2016/679 and (EU) 2018/1725 shall apply to the processing of personal data carried out pursuant to this Regulation. Any personal data made public pursuant to Article 38 of this Regulation and this Article shall only be used to ensure the transparency of the risk assessment under this Regulation and shall not be further processed in a manner that is incompatible with these purposes, in accordance with point (b) of Article 5(1) of Regulation (EU) 2016/679 and point (b) of Article 4(1) of Regulation (EU) 2018/1725, as the case may be)",
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
"section": null,
"positions": [
{
"topLeft": {
"x": 259.19,
"y": 648.586
},
"width": 110.832,
"height": 16.584,
"page": 1
}
],
"status": "APPROVED",
"addToDictionary": false,
"addToDossierDictionary": false,
"requestDate": "2021-11-15T13:33:30Z",
"processedDate": "2021-11-15T13:33:30Z",
"softDeletedTime": null,
"fileId": "a7985c094cac62118c9b350461902f95"
}
]

View File

@ -1,20 +0,0 @@
[
{
"id": "474c3e04-3ab5-4f05-a80d-168f5c348bf6",
"date": "2021-11-19T09:32:46Z",
"text": "Hi this a comment",
"user": "f8960240-9973-42e9-9b0f-ed096ff5a018",
"softDeletedTime": null,
"fileId": "987b67e62979568205a30d4256ac2a4d",
"annotationId": "dc0a1380cbd6fcff2ceb4a1ccec4a252"
},
{
"id": "7ff2936f-68ff-4164-a788-ace1f953bb9c",
"date": "2021-11-15T13:33:30Z",
"text": "frgrtgrtgtrgtr",
"user": "f8960240-9973-42e9-9b0f-ed096ff5a018",
"softDeletedTime": null,
"fileId": "a7985c094cac62118c9b350461902f95",
"annotationId": "82f1e0aee6c825a0a8519b0f1d812df7"
}
]

View File

@ -1,12 +0,0 @@
[
{
"id": "79076b24b707268b3c27874a71494082",
"user": "f8960240-9973-42e9-9b0f-ed096ff5a018",
"status": "APPROVED",
"removeFromDictionary": false,
"requestDate": "2021-11-15T13:34:16Z",
"processedDate": "2021-11-15T13:34:16Z",
"softDeletedTime": null,
"fileId": "a7985c094cac62118c9b350461902f95"
}
]

View File

@ -1,98 +0,0 @@
[
{
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"templateId": "3faddf0b-5d59-4b2f-b568-458ede09eb9b",
"storageId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6/Justification Appendix A1.docx",
"fileName": "Justification Appendix A1.docx",
"uploadDate": "2021-11-15T13:27:30Z",
"multiFileReport": false
},
{
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"templateId": "6964c53b-005f-4731-82a0-84b30210ab33",
"storageId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6/Excel Report.xlsx",
"fileName": "Excel Report.xlsx",
"uploadDate": "2021-11-15T13:27:30Z",
"multiFileReport": true
},
{
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"templateId": "7cc992f1-3e46-48fb-8a75-b5b2f33ebe88",
"storageId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6/Justification Appendix A2.docx",
"fileName": "Justification Appendix A2.docx",
"uploadDate": "2021-11-15T13:27:30Z",
"multiFileReport": false
},
{
"dossierTemplateId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6",
"templateId": "f74130a9-c875-4926-95c1-405d2e272ada",
"storageId": "6d945ebb-604b-4781-a72b-0f07e8ceb3e6/Excel Report.xlsx",
"fileName": "Excel Report.xlsx",
"uploadDate": "2021-11-15T13:27:30Z",
"multiFileReport": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"templateId": "75674b0f-7c70-4903-b30a-2a4aa330b6b1",
"storageId": "49156a1f-30cc-412f-8778-eb5bd842d709/Excel Report.xlsx",
"fileName": "Excel Report.xlsx",
"uploadDate": "2021-11-15T13:26:59Z",
"multiFileReport": true
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"templateId": "87553a68-49e7-4bb6-9af7-263dcb81e964",
"storageId": "49156a1f-30cc-412f-8778-eb5bd842d709/Justification Appendix A1.docx",
"fileName": "Justification Appendix A1.docx",
"uploadDate": "2021-11-15T13:27:00Z",
"multiFileReport": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"templateId": "e2eff609-1dbb-4f10-a1a2-de71f03e5875",
"storageId": "49156a1f-30cc-412f-8778-eb5bd842d709/Excel Report.xlsx",
"fileName": "Excel Report.xlsx",
"uploadDate": "2021-11-15T13:26:59Z",
"multiFileReport": false
},
{
"dossierTemplateId": "49156a1f-30cc-412f-8778-eb5bd842d709",
"templateId": "e37613cb-e093-49af-ae69-5678148c29b8",
"storageId": "49156a1f-30cc-412f-8778-eb5bd842d709/Justification Appendix A2.docx",
"fileName": "Justification Appendix A2.docx",
"uploadDate": "2021-11-15T13:27:00Z",
"multiFileReport": false
},
{
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"templateId": "14a73f71-65bc-4fb9-8319-c11ba9d97e47",
"storageId": "9b7bd575-4566-4408-984f-b26da1d2616e/Justification Appendix A1.docx",
"fileName": "Justification Appendix A1.docx",
"uploadDate": "2021-11-15T13:27:17Z",
"multiFileReport": false
},
{
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"templateId": "345d8544-cd4e-4321-bd3a-8217d9d2f1b3",
"storageId": "9b7bd575-4566-4408-984f-b26da1d2616e/Excel Report.xlsx",
"fileName": "Excel Report.xlsx",
"uploadDate": "2021-11-15T13:27:17Z",
"multiFileReport": false
},
{
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"templateId": "5c78a098-6020-4cf9-b610-5b2422f98d29",
"storageId": "9b7bd575-4566-4408-984f-b26da1d2616e/Excel Report.xlsx",
"fileName": "Excel Report.xlsx",
"uploadDate": "2021-11-15T13:27:17Z",
"multiFileReport": true
},
{
"dossierTemplateId": "9b7bd575-4566-4408-984f-b26da1d2616e",
"templateId": "bb18db9e-2730-403c-90c0-d306aac06284",
"storageId": "9b7bd575-4566-4408-984f-b26da1d2616e/Justification Appendix A2.docx",
"fileName": "Justification Appendix A2.docx",
"uploadDate": "2021-11-15T13:27:18Z",
"multiFileReport": false
}
]

View File

@ -1 +0,0 @@
[{"dossierTemplateId":"6d945ebb-604b-4781-a72b-0f07e8ceb3e6","dossierId":"global","versionType":0,"version":1},{"dossierTemplateId":"6d945ebb-604b-4781-a72b-0f07e8ceb3e6","dossierId":"global","versionType":1,"version":6},{"dossierTemplateId":"6d945ebb-604b-4781-a72b-0f07e8ceb3e6","dossierId":"global","versionType":2,"version":1},{"dossierTemplateId":"49156a1f-30cc-412f-8778-eb5bd842d709","dossierId":"48c10c3e-9831-4165-a80e-6e96ba2c3e98","versionType":1,"version":1},{"dossierTemplateId":"49156a1f-30cc-412f-8778-eb5bd842d709","dossierId":"b2c9c4e5-5382-4862-9402-5b619c41a68c","versionType":1,"version":1},{"dossierTemplateId":"49156a1f-30cc-412f-8778-eb5bd842d709","dossierId":"global","versionType":0,"version":1},{"dossierTemplateId":"49156a1f-30cc-412f-8778-eb5bd842d709","dossierId":"global","versionType":1,"version":33},{"dossierTemplateId":"49156a1f-30cc-412f-8778-eb5bd842d709","dossierId":"global","versionType":2,"version":1},{"dossierTemplateId":"9b7bd575-4566-4408-984f-b26da1d2616e","dossierId":"d46267c1-bb19-44ca-8c0c-60fb5d5309c5","versionType":1,"version":1},{"dossierTemplateId":"9b7bd575-4566-4408-984f-b26da1d2616e","dossierId":"global","versionType":0,"version":2},{"dossierTemplateId":"9b7bd575-4566-4408-984f-b26da1d2616e","dossierId":"global","versionType":1,"version":58},{"dossierTemplateId":"9b7bd575-4566-4408-984f-b26da1d2616e","dossierId":"global","versionType":2,"version":1}]

View File

@ -1 +0,0 @@
[{"fileId":"a7985c094cac62118c9b350461902f95","userId":"f8960240-9973-42e9-9b0f-ed096ff5a018","page":1},{"fileId":"a7985c094cac62118c9b350461902f95","userId":"f8960240-9973-42e9-9b0f-ed096ff5a018","page":5},{"fileId":"a7985c094cac62118c9b350461902f95","userId":"f8960240-9973-42e9-9b0f-ed096ff5a018","page":6}]