moving experimental to master. v .5 to v .6 (#17)

* moving experimental to master. v .5 to v .6

major upgrade to .6 schema docs, new OM, dplx integration, new marketing entities

* get roberts changes
This commit is contained in:
Jeff Bernhardt 2018-07-12 15:23:15 -07:00 коммит произвёл GitHub
Родитель 4a0ba08ee9
Коммит 38bc27e028
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
754 изменённых файлов: 1045987 добавлений и 116569 удалений

Просмотреть файл

10183
Tools/cdm-types/cdm-types.ts Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

17
Tools/cdm2dplx/.vscode/launch.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,17 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${file}",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}

606
Tools/cdm2dplx/cdm2dplx.ts Normal file
Просмотреть файл

@ -0,0 +1,606 @@
import * as cdm from "../cdm-types/cdm-types"
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//
// public interfaces and data structures
//
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// shape of persisted json
////////////////////////////////////////////////////////////////////////////////////////////////////
export interface DataPool {
name : string;
culture: string;
//collation: string;
//isHidden: boolean;
//isGdpr: boolean;
//pii: string;
entities: DPEntity[];
relationships: DPRelationship[];
}
export interface DPEntity {
$type: string;
name : string;
description: string;
//dataCategory: string;
annotations: DPAnnotation[];
attributes: DPAttribute[];
partitions : DPPartition[];
}
export interface DPPartition {
location : string;
}
export interface DPAttribute {
name : string;
description: string;
dataCategory: string;
dataType : string;
sourceColumnName: string;
}
export interface DPAnnotation {
name : string;
value: string;
}
export interface DPRelationshipSide {
entityName : string;
attributeName: string;
}
export interface DPRelationship {
$type : string;
fromAttribute : DPRelationshipSide;
toAttribute: DPRelationshipSide;
}
export interface IConvertToDplx {
bindingType : string; // none, csv, byol
relationshipsType : string; // none, inclusive, all
partitionPattern : string; // a string for the partition location of an entity where $1 is replaced by entity name
schemaUriBase : string; // schema URI base
schemaVersion : string; // explicit version to add to schema references
getPostFix(): string;
convertEntities(entities : cdm.ICdmEntityDef[], dpName : string) : DataPool;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
class DataPoolImpl implements DataPool {
name : string;
culture: string;
//collation: string;
//isHidden: boolean;
//isGdpr: boolean;
//pii: string;
entities: DPEntity[];
relationships: DPRelationship[];
constructor() {
this.name = "ExampleDataPool";
this.culture = "en-EN";
//this.collation = "_CS"
//this.isHidden = false;
//this.isGdpr = false;
//this.pii = "Unclassified";
this.entities = new Array<DPEntity>();
this.relationships = new Array<DPRelationship>();
}
public cleanUp() {
if (this.entities.length == 0)
this.entities = undefined;
if (this.relationships.length == 0)
this.relationships = undefined;
}
}
class DPEntityImpl implements DPEntity {
name : string;
$type: string;
description: string;
//dataCategory: string;
//pii: string;
//isHidden: boolean;
schemas: string[];
annotations: DPAnnotation[];
attributes: DPAttribute[];
partitions : DPPartition[];
constructor() {
this.$type = "LocalEntity"
this.name = "";
this.description = "";
//this.dataCategory = "";
//this.pii = "Unclassified";
this.schemas = new Array<string>();
this.annotations = new Array<DPAnnotation>();
this.attributes = new Array<DPAttribute>();
this.partitions = new Array<DPPartition>();
}
public cleanUp() {
//if (this.pii == "Unclassified")
// this.pii = undefined;
if (this.schemas.length == 0)
this.schemas = undefined;
if (this.annotations.length == 0)
this.annotations = undefined;
if (this.attributes.length == 0)
this.attributes = undefined;
if (this.partitions.length == 0)
this.partitions = undefined;
}
}
class DPPartitionImpl implements DPPartition {
location : string;
constructor(pattern : string, entityName : string) {
this.location = entityName.replace(/(.+)/, pattern);
}
}
class DPAttributeImpl implements DPAttribute {
name : string;
description: string;
dataCategory: string;
dataType : string;
sourceColumnName : string;
annotations : Array<DPAnnotation>;
//pii: string;
//isHidden: boolean;
constructor() {
}
public cleanUp() {
if (this.annotations.length == 0)
this.annotations = undefined;
}
}
class DPAnnotationImpl implements DPAnnotation {
name : string;
value: any;
constructor(name:string, value : any) {
this.name = name;
this.value = value;
}
}
class DPRelationshipSideImpl implements DPRelationshipSide {
entityName : string;
attributeName: string;
}
class DPRelationshipImpl implements DPRelationship {
$type : string;
fromAttribute : DPRelationshipSide;
toAttribute: DPRelationshipSide;
constructor() {
this.$type = "SingleKeyRelationship";
this.fromAttribute = new DPRelationshipSideImpl();
this.toAttribute = new DPRelationshipSideImpl();
}
}
export class Converter implements IConvertToDplx {
public bindingType : string = "none";
public relationshipsType : string = "none";
public partitionPattern : string = "$1.csv";
public schemaUriBase: string = "";
public schemaVersion: string = "";
getPostFix(): string {
return (this.schemaVersion ? "." + this.schemaVersion : "") + ".dplx";
}
public convertEntities(entities : cdm.ICdmEntityDef[], dpName : string) : DataPool {
let dp = new DataPoolImpl();
dp.name = dpName;
let entitiesIncluded = new Set<cdm.ICdmEntityDef>();
let relationshipsSeen = new Array<cdm.ResolvedEntityReferenceSet>();
let postFix = this.getPostFix();
for (let iEnt = 0; iEnt < entities.length; iEnt++) {
const cdmEntity = entities[iEnt];
// remember what was sent to pick out the 'good' relationships at the end
entitiesIncluded.add(cdmEntity);
let rels = cdmEntity.getResolvedEntityReferences();
if(rels)
relationshipsSeen.push(rels);
// make the entity thing
let dpEnt = new DPEntityImpl();
dpEnt.name = cdmEntity.getName();
if (this.bindingType === "byol")
dpEnt.partitions.push(new DPPartitionImpl(this.partitionPattern, dpEnt.name));
// datacategory is the same as name for cdm
//dpEnt.dataCategory = dpEnt.name;
// get the traits of the entity
let rtsEnt = cdmEntity.getResolvedTraits();
// the trait 'is.CDM.attributeGroup' contains a table of references to the 'special' attribute groups contained by the entity.
// also look for the description, pii
let isPII = false;
let isHidden = false;
rtsEnt.set.forEach(rt => {
if (rt.traitName === "is.CDM.attributeGroup") {
// get the entity held in the parameter
let pv : cdm.ParameterValue;
let ent : cdm.ICdmConstantEntityDef;
let cv : string[][];
if ((pv = rt.parameterValues.getParameterValue("groupList")) &&
(pv.value && (ent = pv.value.getObjectDef())) &&
(cv = ent.getConstantValues())) {
cv.forEach(r => {
// assume this is the right entity shape. just one attribute
let agPath = r[0];
// the attributegroup path is virtual from the root of the OM hierarchy out to the name of the attribute group.
// turn this into just the entity doc reference
let expectedEnding = `/${dpEnt.name}/hasAttributes/attributesAddedAtThisScope`;
if (agPath.endsWith(expectedEnding))
agPath = agPath.slice(0, agPath.length - expectedEnding.length);
agPath += postFix;
// caller might want some other prefix
agPath = this.schemaUriBase + agPath;
dpEnt.schemas.push(agPath);
});
}
}
if (rt.trait.isDerivedFrom("is.sensitive.PII"))
isPII=true;
if (rt.trait.isDerivedFrom("is.hidden"))
isHidden = true;
if (rt.traitName === "is.localized.describedAs") {
let localizedTableRef = rt.parameterValues.getParameterValue("localizedDisplayText").value as cdm.cdmObjectRef;
if (localizedTableRef)
dpEnt.description = localizedTableRef.getObjectDef<cdm.ICdmConstantEntityDef>().lookupWhere("displayText", "languageTag", "en");
}
// turn each trait into an annotation too
//this.traitToAnnotation(rt, dpEnt.annotations);
});
// if (isPII)
// dpEnt.pii = "CustomerContent";
// if (isHidden)
// dpEnt.isHidden = true;
// get all attributes of the entity
let ras = cdmEntity.getResolvedAttributes();
ras.set.forEach(ra => {
let dpAtt = new DPAttributeImpl();
dpAtt.name = ra.resolvedName;
let descTrait;
if (descTrait = ra.resolvedTraits.find("is.localized.describedAs")) {
let localizedTableRef = descTrait.parameterValues.getParameterValue("localizedDisplayText").value as cdm.cdmObjectRef;
if (localizedTableRef)
dpAtt.description = localizedTableRef.getObjectDef<cdm.ICdmConstantEntityDef>().lookupWhere("displayText", "languageTag", "en");
}
// if (ra.resolvedTraits.find("is.sensitive.PII"))
// dpAtt.pii = "CustomerContent";
// if (ra.resolvedTraits.find("is.hidden"))
// dpAtt.isHidden = true;
let mapTrait : cdm.ResolvedTrait;
if (mapTrait = ra.resolvedTraits.find("is.CDS.sourceNamed"))
dpAtt.sourceColumnName = mapTrait.parameterValues.getParameterValue("name").valueString;
dpAtt.dataType = this.traits2DataType(ra.resolvedTraits);
dpAtt.dataCategory = this.traits2DataCategory(ra.resolvedTraits);
// turn each trait into an annotation too
dpAtt.annotations = new Array<DPAnnotation>();
let rtsAtt = ra.resolvedTraits;
rtsAtt.set.forEach(rt => {
//this.traitToAnnotation(rt, dpAtt.annotations);
});
dpAtt.cleanUp();
dpEnt.attributes.push(dpAtt);
});
dpEnt.cleanUp()
dp.entities.push(dpEnt);
}
// now pick out all of the relationships that matter for the selected entities
if (this.relationshipsType != "none") {
relationshipsSeen.forEach(entRels => {
entRels.set.forEach(resEntRef => {
let referencingEntity = resEntRef.referencing.entity;
let referencingAttribute = resEntRef.referencing.getFirstAttribute(); // assumes single column keys
resEntRef.referenced.forEach(resEntRefSideReferenced => {
let referencedEntity = resEntRefSideReferenced.entity;
let referencedAttribute = resEntRefSideReferenced.getFirstAttribute();// assumes single column keys
if (referencedEntity && referencedAttribute &&
((this.relationshipsType == "inclusive" && entitiesIncluded.has(referencingEntity) && entitiesIncluded.has(referencedEntity)) ||
(this.relationshipsType == "all"))) {
let dpRel = new DPRelationshipImpl();
dpRel.fromAttribute.entityName = referencingEntity.getName();
dpRel.fromAttribute.attributeName = referencingAttribute.resolvedName;
dpRel.toAttribute.entityName = referencedEntity.getName();
dpRel.toAttribute.attributeName = referencedAttribute.resolvedName;
dp.relationships.push(dpRel);
}
});
});
});
}
dp.cleanUp();
return dp;
}
traits2DataType(rts : cdm.ResolvedTraitSet) : string {
let baseType : string = "unclassified";
let l = rts.set.length;
for (let i = 0; i < l; i++) {
const raName = rts.set[i].traitName;
switch (raName) {
case "is.dataFormat.integer":
baseType = "int64";
break;
case "is.dataFormat.floatingPoint":
baseType = "double";
break;
case "is.dataFormat.byte":
case "is.dataFormat.character":
baseType = "string";
break;
case "is.dataFormat.time":
case "is.dataFormat.date":
baseType = "dateTime";
break;
case "is.dataFormat.boolean":
baseType = "boolean";
break;
case "is.dataFormat.numeric.shaped":
baseType = "decimal";
break;
default:
break;
}
}
return baseType;
}
traits2DataCategory(rts : cdm.ResolvedTraitSet) : string {
let baseType = "Uncategorized";
let fiscal = false;
let calendar = false;
let l = rts.set.length;
for (let i = 0; i < l; i++) {
const raName = rts.set[i].traitName;
switch (raName) {
case "means.calendar.fiscal":
fiscal = true;
break;
case "means.calendar.dayOfWeek":
calendar = true;
baseType = "DayOfWeek";
break;
case "means.calendar.dayOfMonth":
calendar = true;
baseType = "DayOfMonth";
break;
case "means.calendar.dayOfYear":
calendar = true;
baseType = "DayOfYear";
break;
case "means.calendar.weekOfMonth":
calendar = true;
baseType = "WeekOfMonth";
break;
case "means.calendar.weekOfYear":
calendar = true;
baseType = "WeekOfYear";
break;
case "means.calendar.month":
calendar = true;
baseType = "Month";
break;
case "means.calendar.monthOfYear":
calendar = true;
baseType = "MonthOfYear";
break;
case "means.calendar.quarter":
calendar = true;
baseType = "Quarter";
break;
case "means.calendar.week":
calendar = true;
baseType = "Week";
break;
case "means.calendar.year":
calendar = true;
baseType = "Year";
break;
case "means.idea.account":
baseType = "Account";
break;
case "means.idea.channel":
baseType = "Channel";
break;
case "means.idea.customer":
baseType = "Customer";
break;
case "means.idea.person":
case "means.idea.person.contact":
case "means.idea.person.employee":
case "means.idea.person.representative":
baseType = "Person";
break;
case "means.idea.organization":
baseType = "Organization";
break;
case "means.idea.organization.unit":
baseType = "Organization.Unit";
break;
case "means.idea.product":
baseType = "Product";
break;
case "means.location.address":
baseType = "Location.Address";
break;
case "means.location.address.street":
baseType = "Location.Address.Street";
break;
case "means.location.city":
baseType = "Location.City";
break;
case "means.location.continent":
baseType = "Location.Continent";
break;
case "means.location.country":
baseType = "Location.Country";
break;
case "means.location.county":
baseType = "Location.County";
break;
case "means.location.latitude":
baseType = "Location.Latitude";
break;
case "means.location.longitude":
baseType = "Location.Longitude";
break;
case "means.location.point":
baseType = "Location.Point";
break;
case "means.location.postalCode":
baseType = "Location.PostalCode";
break;
case "means.location.province":
baseType = "Location.Province";
break;
case "means.location.region":
baseType = "Location.Region";
break;
case "means.location.stateOrProvince":
baseType = "Location.State";
break;
case "means.location.timezone":
baseType = "Location.Timezone";
break;
case "means.measurement.version":
baseType = "Measurement.Version";
break;
case "means.measurement.date.creation":
baseType = "Measurement.Date.Creation";
break;
case "means.measurement.date.modify":
baseType = "Measurement.Date.Modify";
break;
case "means.content.binary.image":
case "means.content.binary.image.BMP":
case "means.content.binary.image.GIF":
case "means.content.binary.image.JPG":
case "means.content.binary.image.PNG":
case "means.content.binary.image.TIFF":
baseType = "Image";
break;
case "means.identity.barCode":
baseType = "BarCode";
break;
case "means.identity.brand":
baseType = "Brand";
break;
case "means.identity.governmentID":
baseType = "Identity.GovernmentID";
break;
case "means.identity.person.firstName":
baseType = "Person.FirstName";
break;
case "means.identity.person.fullName":
baseType = "Person.FullName";
break;
case "means.identity.person.lastName":
baseType = "Person.LastName";
break;
case "means.identity.person.middleName":
baseType = "Person.MiddleName";
break;
case "means.identity.service.email":
baseType = "Identity.Service.Email";
break;
case "means.identity.service.facebook":
baseType = "Identity.Service.Facebook";
break;
case "means.identity.service.phone":
case "means.identity.service.phone.cell":
case "means.identity.service.phone.fax":
baseType = "Identity.Service.Phone";
break;
case "means.identity.service.twitter":
baseType = "Identity.Service.Twitter";
break;
case "means.reference.description":
baseType = "Reference.Description";
break;
case "means.reference.phonetic":
baseType = "Reference.Phonetic";
break;
case "means.reference.URL":
baseType = "Reference.URL";
break;
case "means.reference.URL.image":
baseType = "Reference.ImageURL";
break;
default:
break;
}
if (calendar) {
if (fiscal) {
baseType = "Calendar.Fiscal." + baseType;
}
else {
if (baseType == "DayOfMonth" || baseType == "DayOfWeek" || baseType == "DayOfYear")
baseType = "Calendar." + baseType;
else
baseType = "Calendar.Date";
}
}
}
return baseType;
}
traitToAnnotation(rt : cdm.ResolvedTrait, annotations : DPAnnotation[]) {
// skip the ugly traits
if (!rt.trait.ugly) {
let annotationName = "trait." + rt.traitName;
let annotation : DPAnnotation;
// if there are non-null parameters for the trait, they each turn into annotations
let pv = rt.parameterValues;
if (pv && pv.length) {
for (let i =0; i< pv.length; i++) {
let paramName = pv.getParameter(i).getName();
let paramValue = pv.getValueString(i);
if (paramValue) {
annotation = new DPAnnotationImpl(annotationName + "." + paramName, paramValue);
annotations.push(annotation);
}
}
}
if (!annotation) {
annotation = new DPAnnotationImpl(annotationName, "true");
annotations.push(annotation);
}
}
}
}

47
Tools/cdm2dplx/package-lock.json сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,47 @@
{
"name": "cdm2dplx",
"version": "0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@types/node": {
"version": "8.10.19",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.19.tgz",
"integrity": "sha512-+PU57o6DtOSx0/algmxgCwWrmCiomwC/K+LPfXonT0tQMbNTjHEqVzwL9dFEhFoPmLFIiSWjRorLH6Z0hJMT+Q=="
},
"log": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/log/-/log-1.4.0.tgz",
"integrity": "sha1-S6HYkP3iSbAx3KA7w36q8yVlbxw="
},
"performance": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/performance/-/performance-1.1.1.tgz",
"integrity": "sha1-Rt77WFIhOm1qYEYfYCuVDkcjgZQ=",
"requires": {
"log": "1.4.0",
"prototypes": "2.3.3",
"stdio": "0.2.7",
"testing": "1.1.1"
}
},
"prototypes": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/prototypes/-/prototypes-2.3.3.tgz",
"integrity": "sha1-jTT8v1m2ZKZcpciMbhBlEy6Z/dE="
},
"stdio": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/stdio/-/stdio-0.2.7.tgz",
"integrity": "sha1-ocV9oQ/hz6oMO/aDydB0PRtmCDk="
},
"testing": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/testing/-/testing-1.1.1.tgz",
"integrity": "sha1-mgVzBVX1LW2ckUCDu6VaxIztkgM=",
"requires": {
"log": "1.4.0"
}
}
}
}

Просмотреть файл

@ -0,0 +1,9 @@
{
"name": "cdm2dplx",
"version": "0.0",
"dependencies": {
"@types/es6-promise": "^3.3.0",
"@types/node": "^8.10.19",
"performance": "^1.1.1"
}
}

Просмотреть файл

@ -0,0 +1,143 @@
import * as cdm from "../cdm-types/cdm-types"
import * as cdm2dplx from "../cdm2dplx/cdm2dplx"
import * as loc from "../local-corpus/local-corpus";
import { writeFileSync, mkdirSync, existsSync } from "fs";
import { version } from "punycode";
class Startup {
public static main(): number {
let cdmCorpus : cdm.Corpus;
let pathToDocRoot = "../../schemaDocuments";
let version = "";
//let version = "0.6"; // explicitly use the explicit version docs to get versioned schema refs too
cdmCorpus = new cdm.Corpus(pathToDocRoot);
cdmCorpus.statusLevel = cdm.cdmStatusLevel.progress;
console.log('reading source files');
loc.loadCorpusFolder(cdmCorpus, cdmCorpus.addFolder("core"), ["analyticalCommon"], version);
let statusRpt = loc.consoleStatusReport;
loc.resolveLocalCorpus(cdmCorpus, cdm.cdmStatusLevel.error, statusRpt).then((r:boolean) =>{
//this.listAllTraits(cdmCorpus);
this.createTestDplx(cdmCorpus);
//this.createEachDplx(cdmCorpus, pathToDocRoot, version);
console.log('done');
}).catch();
return 0;
}
public static listAllTraits(cdmCorpus : cdm.Corpus) {
let seen = new Set<string>();
let seekTraits = (folder : cdm.ICdmFolderDef) => {
if (folder.getName() != "" && folder.getDocuments() && folder.getDocuments().length)
{
if (folder.getDocuments())
folder.getDocuments().forEach(doc => {
if (doc.getDefinitions() && doc.getDefinitions().length)
doc.getDefinitions().forEach(def => {
if (def.getObjectType() == cdm.cdmObjectType.entityDef) {
let ent = def as cdm.ICdmEntityDef;
let rtsEnt = ent.getResolvedTraits();
rtsEnt.set.forEach(rt => {
let rtName = rt.traitName;
if (!seen.has(rtName)) {
console.log(rtName);
seen.add(rtName);
}
});
let ras = ent.getResolvedAttributes();
ras.set.forEach(ra => {
let rtsAtt = ra.resolvedTraits;
rtsAtt.set.forEach(rt => {
let rtName = rt.traitName;
if (!seen.has(rtName)) {
console.log(rtName);
seen.add(rtName);
}
});
});
}
});
});
}
if (folder.getSubFolders()) {
folder.getSubFolders().forEach(f => {
seekTraits(f);
});
}
}
seekTraits(cdmCorpus);
}
public static createTestDplx(cdmCorpus : cdm.Corpus) {
let converter = new cdm2dplx.Converter() as cdm2dplx.IConvertToDplx;
converter.bindingType="byol"
converter.relationshipsType="inclusive";
converter.schemaUriBase = "";
let set = new Array<cdm.ICdmEntityDef>();
let ent = cdmCorpus.getObjectFromCorpusPath("/core/applicationCommon/foundationCommon/crmCommon/Account.cdm.json/Account") as cdm.ICdmEntityDef;
// ignore this, just testing out the 'search for atts from traits' function
//let eat = ent.getFriendlyFormat().toString(200, 20, 0, 2);
//writeFileSync("account.spew", eat, "utf-8");
// let s = ent.getAttributesWithTraits(["is.dataFormat.floatingPoint","means.location.longitude"]);
// s = ent.getAttributesWithTraits("means.reference");
// s = ent.getAttributesWithTraits({traitBaseName:"is.requiredAtLevel", params : [{paramName : "level", paramValue : "systemrequired"}]});
set.push(ent);
set.push(cdmCorpus.getObjectFromCorpusPath("/core/applicationCommon/foundationCommon/crmCommon/Lead.cdm.json/Lead") as cdm.ICdmEntityDef);
let dplx = converter.convertEntities(set, "ExampleDataPool");
}
public static createEachDplx(cdmCorpus : cdm.Corpus, outRoot : string, version : string) {
let converter = new cdm2dplx.Converter() as cdm2dplx.IConvertToDplx;
converter.bindingType="none"
converter.relationshipsType="all";
converter.schemaUriBase = "https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments";
converter.schemaVersion = version;
let dplxFolders = (folder : cdm.ICdmFolderDef) => {
let folderPath = outRoot + folder.getRelativePath();
if (!existsSync(folderPath))
mkdirSync(folderPath);
if (folder.getName() != "" && folder.getDocuments() && folder.getDocuments().length)
{
if (folder.getDocuments())
folder.getDocuments().forEach(doc => {
if (doc.getDefinitions() && doc.getDefinitions().length)
doc.getDefinitions().forEach(def => {
if (def.getObjectType() == cdm.cdmObjectType.entityDef) {
let ent = def as cdm.ICdmEntityDef;
let dplx = converter.convertEntities([ent], "");
let content = JSON.stringify(dplx, null, 2);
writeFileSync(folderPath + ent.getName() + converter.getPostFix(), content, "utf8");
}
});
});
}
if (folder.getSubFolders()) {
folder.getSubFolders().forEach(f => {
dplxFolders(f);
});
}
}
dplxFolders(cdmCorpus);
}
}
Startup.main();

Просмотреть файл

@ -0,0 +1,15 @@
{
"compilerOptions": {
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "ES6",
"sourceMap": true
},
"files": [
"../cdm-types/cdm-types.ts",
"../local-corpus/local-corpus.ts",
"cdm2dplx.ts",
"testDriver.ts"
]
}

19
Tools/cdst2cdm/.vscode/launch.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,19 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/cdst2cdm.ts",
"protocol": "inspector",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}

809
Tools/cdst2cdm/cdst2cdm.ts Normal file
Просмотреть файл

@ -0,0 +1,809 @@
import * as cdm from "../cdm-types/cdm-types";
import * as loc from "../local-corpus/local-corpus";
import { readFileSync} from "fs";
interface dataTypeAndRelationshipPicker {
scoreAtttribute(type : string, internalName : string, semanticType : string) : number;
typeName? : string;
typeTraitName? : string;
relationshipName? : string;
}
class Startup {
public static main(): number {
let now = Date.now();
let cdmCorpus : cdm.Corpus;
let pathToDocRoot = "../../schemaDocuments";
// run over intput folders recursively and process them into a hierarchical corpus of schema docs
console.log('reading source file');
let cdstCorpus = JSON.parse(readFileSync("entitycorpus.json", "utf8"));
console.log('creating cdm corpus');
if (cdstCorpus && cdstCorpus.folderInfo && cdstCorpus.folderInfo.length ==1) {
cdmCorpus = new cdm.Corpus(pathToDocRoot);
cdmCorpus.statusLevel = cdm.cdmStatusLevel.progress;
this.convertCdstFolder(cdstCorpus.folderInfo[0], cdmCorpus);
}
console.log('persist Corpus:');
// run over created corpus and write out the docs into the folders
loc.persistCorpus(cdmCorpus);
console.log('reading well known attribute sets');
let wkas = readFileSync(cdmCorpus.rootPath + "/core/applicationCommon/wellKnownCDSAttributeGroups.cdm.json", "utf8");
let docWkas : cdm.ICdmDocumentDef = cdmCorpus.addDocumentFromContent("/core/applicationCommon/wellKnownCDSAttributeGroups.cdm.json", wkas);
let statusRpt = loc.consoleStatusReport;
now = Date.now();
loc.resolveLocalCorpus(cdmCorpus, cdm.cdmStatusLevel.error, statusRpt).then((r:boolean) =>{
console.log('finished');
console.log(Date.now() - now);
}).catch();
return 0;
}
public static convertCdstFolder(cdstFolder : any, cdmFolderParent : cdm.ICdmFolderDef): cdm.ICdmFolderDef {
let cdmFolder : cdm.ICdmFolderDef = null;
if (cdmFolderParent && cdstFolder.name && cdstFolder.path != null) {
if (cdmFolder = cdmFolderParent.addFolder(cdstFolder.name)) {
// add a master import for the folder
let masterImport : string;
if (cdstFolder.referenceInfo && cdstFolder.referenceInfo.length) {
masterImport = "_allImports.cdm.json";
let cdmDocImp : cdm.ICdmDocumentDef = cdmFolder.addDocument("_allImports.cdm.json", "");
cdmDocImp.addImport("/core/applicationCommon/cdsConcepts.cdm.json", "");
cdmDocImp.addImport("/core/applicationCommon/wellKnownCDSAttributeGroups.cdm.json", "");
cdstFolder.referenceInfo.sort((l, r) : number => {
// sort to put monikers first then by path so that things which stop or diverge "lower" than this path are first
// then the things at this path then the things which are 'deeper' than this path. this way more specialized
// re-declarations of base objects are last and thay way they override the earlier declarations
if (l.referenceMoniker && !r.referenceMoniker)
return -1;
if (!l.referenceMoniker && r.referenceMoniker)
return 1;
if (!l.referencePath && !r.referencePath)
return l.referenceItem.localeCompare(r.referenceItem);
if (!l.referencePath && r.referencePath)
return 1;
if (l.referencePath && !r.referencePath)
return -1;
if (r.referencePath.startsWith(l.referencePath))
return -1;
if (l.referencePath.startsWith(r.referencePath))
return 1;
return l.referencePath.localeCompare(r.referencePath);
}).forEach(imp => {
if (imp.referencePath != null && imp.referenceItem != null) {
cdmDocImp.addImport(imp.referencePath + imp.referenceItem + ".cdm.json", imp.referenceMoniker);
}
});
}
// add all documents
if (cdstFolder.entityInfo && cdstFolder.entityInfo.length) {
cdstFolder.entityInfo.forEach(ei => {
this.convertCdstEntityToDoc(cdmFolder, ei, masterImport);
});
}
// create the sub-folders
if (cdstFolder.subFolders && cdstFolder.subFolders.length) {
cdstFolder.subFolders.forEach(f => {
this.convertCdstFolder(f, cdmFolder);
});
}
}
}
return cdmFolder;
}
public static convertCdstEntityToDoc(cdmFolder : cdm.ICdmFolderDef, cdstEntityInfo : any, masterImport : string): cdm.ICdmDocumentDef {
let cdmDocument : cdm.ICdmDocumentDef = null;
if (cdmFolder && cdstEntityInfo.name) {
if (cdmDocument = cdmFolder.addDocument(cdstEntityInfo.name + ".cdm.json", "")) {
// need an import?
if (masterImport) {
let imp = cdmDocument.addImport(masterImport, null);
}
// add the entity
let cdmEntity = cdmDocument.addDefinition<cdm.ICdmEntityDef>(cdm.cdmObjectType.entityDef, cdstEntityInfo.name);
// do everything
this.cdstEntityToCdmEntity(cdmFolder, cdstEntityInfo, cdmEntity);
}
}
return cdmDocument;
}
public static cdstEntityToCdmEntity(cdmFolder : cdm.ICdmFolderDef, cdstEntityInfo : any, cdmEntity : cdm.ICdmEntityDef) {
// is this an extension entity? make the ref
if (cdstEntityInfo.extends) {
cdmEntity.setExtendsEntityRef(cdm.Corpus.MakeRef(cdm.cdmObjectType.entityRef, cdstEntityInfo.extends));
}
else {
cdmEntity.setExtendsEntityRef(cdm.Corpus.MakeRef(cdm.cdmObjectType.entityRef, "CdmObject"));
}
let getLocalizedTableTrait = (sourceText : string, traitName : string) : cdm.ICdmTraitRef => {
if (sourceText) {
let tRef = cdm.Corpus.MakeObject<cdm.ICdmTraitRef>(cdm.cdmObjectType.traitRef, traitName);
// make the argument nothing but a ref to a constant entity, safe since there is only one param for the trait and it looks cleaner
let cEnt = cdm.Corpus.MakeObject<cdm.ICdmConstantEntityDef>(cdm.cdmObjectType.constantEntityDef);
cEnt.setEntityShape(cdm.Corpus.MakeRef(cdm.cdmObjectType.entityRef, "localizedTable"));
cEnt.setConstantValues([["en", sourceText]]);
tRef.addArgument(undefined, cdm.Corpus.MakeRef(cdm.cdmObjectType.constantEntityRef, cEnt));
return tRef;
}
}
// add descriptive and display text
cdmEntity.addExhibitedTrait(getLocalizedTableTrait(cdstEntityInfo.displayName, "is.localized.displayedAs"), false);
cdmEntity.addExhibitedTrait(getLocalizedTableTrait(cdstEntityInfo.description, "is.localized.describedAs"), false);
if (cdstEntityInfo.CDSTName) {
let tRef = cdmEntity.addExhibitedTrait("is.CDS.sourceNamed", false);
tRef.addArgument(undefined, cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, cdstEntityInfo.CDSTName));
}
// for each attribute
if (cdstEntityInfo.attributeInfo) {
interface creationResultInfo {
requiredLevel? : string;
};
// create an attribute group with a trait that lists the path.
let attGroupAll = cdm.Corpus.MakeObject<cdm.ICdmAttributeGroupDef>(cdm.cdmObjectType.attributeGroupDef, "attributesAddedAtThisScope");
let tRef = cdm.Corpus.MakeObject<cdm.ICdmTraitRef>(cdm.cdmObjectType.traitRef, "is.CDM.attributeGroup");
// make the argument nothing but a ref to a constant entity, safe since there is only one param for the trait and it looks cleaner
let cEnt = cdm.Corpus.MakeObject<cdm.ICdmConstantEntityDef>(cdm.cdmObjectType.constantEntityDef);
cEnt.setEntityShape(cdm.Corpus.MakeRef(cdm.cdmObjectType.entityRef, "attributeGroupSet"));
let groupPath = cdmFolder.getRelativePath() + cdmEntity.getName() + ".cdm.json/" + cdmEntity.getName() + "/hasAttributes/attributesAddedAtThisScope";
// is this an extension entity? make the ref
cEnt.setConstantValues([[groupPath]]);
tRef.addArgument(undefined, cdm.Corpus.MakeRef(cdm.cdmObjectType.constantEntityRef, cEnt));
attGroupAll.addExhibitedTrait(tRef, false);
let relRefStatus : cdm.ICdmRelationshipRef = null;
let attNameState : string = "UNSPECIFIED";
let createTypeAttribute = (attInfo : any, resultInfo : creationResultInfo) : cdm.ICdmAttributeDef => {
let cdmAtt = cdm.Corpus.MakeObject<cdm.ICdmAttributeDef>(cdm.cdmObjectType.typeAttributeDef, attInfo.name);
// if this is the primary key, use the right relationship
let relRef : cdm.ICdmRelationshipRef = cdm.Corpus.MakeRef(cdm.cdmObjectType.relationshipRef, "hasA");
if (attInfo.isPrimaryKey) {
relRef = cdm.Corpus.MakeRef(cdm.cdmObjectType.relationshipRef, "identifiedBy");
}
// everything has one of these
let tRef = cdmAtt.addAppliedTrait("is.CDS.sourceNamed", false);
tRef.addArgument(undefined, cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, attInfo.CDSTName));
// constrained?
if (attInfo.maxLength || attInfo.minValue || attInfo.maxValue) {
tRef = cdmAtt.addAppliedTrait("is.constrained", false);
if (attInfo.maxLength)
tRef.addArgument("maximumLength", cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, attInfo.maxLength));
if (attInfo.minValue)
tRef.addArgument("minimumValue", cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, attInfo.minValue));
if (attInfo.maxValue)
tRef.addArgument("maximumValue", cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, attInfo.maxValue));
}
if (attInfo.columnNumber) {
tRef = cdmAtt.addAppliedTrait("is.CDS.ordered", false);
tRef.addArgument(undefined, cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, attInfo.columnNumber));
}
if (attInfo.lookupStyle) {
tRef = cdmAtt.addAppliedTrait("is.CDS.lookup", false);
tRef.addArgument("style", cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, attInfo.lookupStyle));
}
if (attInfo.calculationOf) {
tRef = cdmAtt.addAppliedTrait("is.calculationOf", false);
tRef.addArgument("sourceAttribute", cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, attInfo.calculationOf));
}
if (attInfo.isNullable) {
tRef = cdmAtt.addAppliedTrait("is.nullable", true);
}
if (attInfo.requiredLevel) {
tRef = cdmAtt.addAppliedTrait("is.requiredAtLevel", false);
tRef.addArgument("level", cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, attInfo.requiredLevel));
resultInfo.requiredLevel = attInfo.requiredLevel;
}
// figure out a data type
let dataType : cdm.ICdmDataTypeRef;
let dataTypeName = "listLookup";
let supportingDataTypeName : string = "localizedDisplayText";
if (attInfo.isPrimaryKey) {
dataType = cdm.Corpus.MakeRef(cdm.cdmObjectType.dataTypeRef, "entityId");
}
else if (attInfo.isBaseCurrency) {
dataType = cdm.Corpus.MakeRef(cdm.cdmObjectType.dataTypeRef, "baseCurrency");
}
else if (attInfo.dataType == "picklist" || attInfo.dataType == "state" || attInfo.dataType == "status" || attInfo.dataType == "multiselectpicklist") {
// option set might be just a picklist, a state or a status
let entityShape = "listLookupValues";
let entityExplanation="The constantValues below correspond to the attributes of the 'listLookupValues' entityShape which are: {languageTag, displayText, attributeValue, displayOrder}";
if (attInfo.dataType === "status") {
entityShape = "listLookupCorrelatedValues"
entityExplanation="The constantValues below correspond to the attributes of the 'listLookupCorrelatedValues' entityShape which are: {languageTag, displayText, attributeValue, displayOrder, correlatedValue}";
relRef = cdm.Corpus.MakeObject(cdm.cdmObjectType.relationshipRef, "representsCorrelatedStatusWith");
relRefStatus = relRef; // remember for the end of the att list
}
else if (attInfo.dataType === "state") {
attNameState = attInfo.name; // remember for the end of the att list
relRef = cdm.Corpus.MakeRef(cdm.cdmObjectType.relationshipRef, "representsStateWith");
}
else if (attInfo.dataType == "multiselectpicklist") {
dataTypeName = "listLookupMultiple";
supportingDataTypeName = "localizedDisplayTextMultiple";
}
// construct the datatype
dataType = cdm.Corpus.MakeObject(cdm.cdmObjectType.dataTypeRef, dataTypeName);
// which has a trait containing the default value
let cEnt = cdm.Corpus.MakeObject<cdm.ICdmConstantEntityDef>(cdm.cdmObjectType.constantEntityDef);
cEnt.setEntityShape(cdm.Corpus.MakeRef(cdm.cdmObjectType.entityRef, entityShape));
cEnt.setExplanation(entityExplanation);
dataType.addAppliedTrait("does.haveDefault", false).addArgument(undefined, cdm.Corpus.MakeRef(cdm.cdmObjectType.entityRef, cEnt));
let vals = new Array<Array<string>>();
if (attInfo.optionSetInfo && attInfo.optionSetInfo.length)
attInfo.optionSetInfo.forEach(osi => {
let row = new Array<string>();
row.push("en");
row.push(osi.displayName);
row.push(osi.value.toString());
row.push(osi.displayOrder.toString());
if (entityShape === "listLookupCorrelatedValues")
row.push(osi.stateStatusValue.toString());
vals.push(row);
});
cEnt.setConstantValues(vals);
// and a trait that adds a support description attribute
let supAtt = cdm.Corpus.MakeObject<cdm.ICdmTypeAttributeDef>(cdm.cdmObjectType.typeAttributeDef, attInfo.name + "_display");
supAtt.setDataTypeRef(cdm.Corpus.MakeRef(cdm.cdmObjectType.dataTypeRef, supportingDataTypeName));
supAtt.setRelationshipRef(cdm.Corpus.MakeRef(cdm.cdmObjectType.relationshipRef, "hasA"));
supAtt.setExplanation(`This attribute '${attInfo.name + "_display"}' is added to the '${cdstEntityInfo.name}' entity to provide the localized display text for the value of the listLookup attribute '${attInfo.name}'`);
dataType.addAppliedTrait("does.addSupportingAttribute", false).addArgument(undefined, supAtt);
supAtt.addAppliedTrait("is.readOnly", true);
}
else {
let bestPicker : dataTypeAndRelationshipPicker;
let bestScore = 0;
let bestType : string;
let bestTrait : string;
let bestRelationship : string;
// find the highest scoring picker that can give type
this.getPickers().forEach(p => {
if (p.typeName) {
let scoreP = p.scoreAtttribute(attInfo.dataType, attInfo.CDSTName, attInfo.semanticType);
if (scoreP > bestScore) {
bestPicker = p;
bestScore = scoreP;
}
}
});
bestType = bestPicker.typeName;
bestTrait = bestPicker.typeTraitName;
bestRelationship = bestPicker.relationshipName;
// see if there are any that give just traits
if (!bestTrait) {
bestPicker = undefined;
bestScore = 0;
this.getPickers().forEach(p => {
if (!p.typeName && p.typeTraitName) {
let scoreP = p.scoreAtttribute(attInfo.dataType, attInfo.CDSTName, attInfo.semanticType);
if (scoreP > bestScore) {
bestPicker = p;
bestScore = scoreP;
}
}
});
if (bestPicker) {
bestTrait = bestPicker.typeTraitName;
if (!bestRelationship)
bestRelationship = bestPicker.relationshipName;
}
}
// relationships only?
if (!bestRelationship) {
bestPicker = undefined;
bestScore = 0;
this.getPickers().forEach(p => {
if (!p.typeName && !p.typeTraitName && p.relationshipName) {
let scoreP = p.scoreAtttribute(attInfo.dataType, attInfo.CDSTName, attInfo.semanticType);
if (scoreP > bestScore) {
bestPicker = p;
bestScore = scoreP;
}
}
});
if (bestPicker)
bestRelationship = bestPicker.relationshipName;
}
if (bestTrait) {
dataType = cdm.Corpus.MakeObject<cdm.ICdmDataTypeRef>(cdm.cdmObjectType.dataTypeRef, bestType)
dataType.addAppliedTrait(bestTrait, true);
} else {
dataType = cdm.Corpus.MakeRef(cdm.cdmObjectType.dataTypeRef, bestType);
}
if (bestRelationship)
relRef = cdm.Corpus.MakeRef(cdm.cdmObjectType.relationshipRef, bestRelationship);
}
(cdmAtt as cdm.ICdmTypeAttributeDef).setDataTypeRef(dataType);
cdmAtt.setRelationshipRef(relRef);
cdmAtt.addAppliedTrait(getLocalizedTableTrait(attInfo.displayName, "is.localized.displayedAs"), false);
cdmAtt.addAppliedTrait(getLocalizedTableTrait(attInfo.description, "is.localized.describedAs"), false);
return cdmAtt;
};
cdstEntityInfo.attributeInfo.forEach(attInfo => {
let cdmAtt : cdm.ICdmAttributeDef;
let resultInfo : creationResultInfo = {};
if (attInfo.dataType == "customer" || attInfo.dataType == "lookup" || attInfo.dataType == "owner" || (attInfo.relationshipInfo && attInfo.relationshipInfo.length)) {
// this is an entity type attribute by ref
let referencedEntity : string = "";
cdmAtt = cdm.Corpus.MakeObject(cdm.cdmObjectType.entityAttributeDef, null);
// make a list of all referenced entities
let makeRefEntity = (relInfo : any) : cdm.ICdmEntityRef =>{
if (referencedEntity.length)
referencedEntity += " and ";
referencedEntity += relInfo.referencedEntity;
let er : cdm.ICdmEntityRef = cdm.Corpus.MakeObject(cdm.cdmObjectType.entityRef, relInfo.referencedEntity);
let tRef = er.addAppliedTrait("is.identifiedBy", false);
tRef.addArgument(undefined, cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, relInfo.referencedEntity + "/(resolvedAttributes)/" +relInfo.referencedAttribute));
return er;
}
let entList = new Array<cdm.ICdmEntityRef>();
if (attInfo.relationshipInfo.length > 1) {
attInfo.relationshipInfo.forEach(relInfo => {
entList.push(makeRefEntity(relInfo));
});
(cdmAtt as cdm.ICdmEntityAttributeDef).setEntityRef(entList);
}
else {
let relInf;
if (attInfo.relationshipInfo && attInfo.relationshipInfo.length)
relInf = attInfo.relationshipInfo[0];
if ((!relInf && attInfo.dataType == "owner") || (relInf && relInf.referencedEntity == "Owner")) {
// fake up a list, there is no Owner entity
let relInfFake = {referencedEntity: "User", referencedAttribute:"systemUserId"};
entList.push(makeRefEntity(relInfFake));
relInfFake = {referencedEntity: "Team", referencedAttribute:"teamId"};
entList.push(makeRefEntity(relInfFake));
(cdmAtt as cdm.ICdmEntityAttributeDef).setEntityRef(entList);
}
else if (!relInf) {
// some we can guess at
}
else {
entList.push(makeRefEntity(attInfo.relationshipInfo[0]));
(cdmAtt as cdm.ICdmEntityAttributeDef).setEntityRef(entList[0]);
}
}
if (entList.length) {
// set up the relationship to add the key
let relName = "referencesA";
if (attInfo.dataType === "customer")
relName = "referencesCustomer"
if (attInfo.dataType === "owner")
relName = "referencesOwner"
let rel = cdm.Corpus.MakeObject<cdm.ICdmRelationshipRef>(cdm.cdmObjectType.relationshipRef, relName)
let tRef = rel.addAppliedTrait("referencesA/exhibitsTraits/does.referenceEntity", false);
tRef.addArgument("addedAttribute", createTypeAttribute(attInfo, resultInfo))
.setExplanation(`This 'referencesA' relationship to the entity '${referencedEntity}' adds the '${attInfo.name}' attribute below to the '${cdstEntityInfo.name}' entity as a key`);
cdmAtt.setRelationshipRef(rel);
}
else {
// give up. make a regular
cdmAtt = createTypeAttribute(attInfo, resultInfo);
}
}
else {
cdmAtt = createTypeAttribute(attInfo, resultInfo);
}
let attGroupTarget = attGroupAll;
// if (resultInfo.requiredLevel && resultInfo.requiredLevel != "none")
// attGroupTarget = attGroupRequired;
attGroupTarget.addMemberAttributeDef(cdmAtt as any);
});
// go back and set this to what was found in the rest of the list
if (relRefStatus)
relRefStatus.addAppliedTrait("is.correlatedWith", false).addArgument(undefined, cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, attNameState));
cdmEntity.addAttributeDef(cdm.Corpus.MakeRef(cdm.cdmObjectType.attributeGroupRef, attGroupAll) as cdm.ICdmAttributeGroupRef);
}
}
static getPickers() : dataTypeAndRelationshipPicker[] {
let typeIsString = (type : string) : boolean =>{
return (type === "text" || type === "ntext" || type ==="nvarchar");
}
let typeIsGuid = (type : string) : boolean =>{
return (type === "uniqueidentifier" || type === "primarykey" || type ==="lookup" || type ==="customer" || type ==="owner" || type ==="partylist");
}
let nameContains = (name : string, sub : string) : boolean => {
return name.toUpperCase().includes(sub.toUpperCase(), 0);
}
let stringTypeNameContains = (type : string, name : string, sub : string) : boolean => {
if (!typeIsString(type))
return false;
return nameContains(name, sub);
}
let guidTypeNameContains = (type : string, name : string, sub : string) : boolean => {
if (!typeIsGuid(type))
return false;
return nameContains(name, sub);
}
return [
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return (type === "image" ? .25 : 0);
},
get typeName() { return "image"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return (type === "uniqueidentifier" ? .25 : 0);
},
get typeName() { return "guid"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return (type === "datetime" ? .25 : 0);
},
get typeName() { return "dateTime"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return (type === "money" ? .25 : 0);
},
get typeName() { return "currency"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return (type === "decimal" ? .25 : 0);
},
get typeName() { return "decimal"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return (type === "float" ? .25 : 0);
},
get typeName() { return "double"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return (type === "int" ? .25 : 0);
},
get typeName() { return "integer"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return ((type === "tinyint" || type === "smallint") ? .25 : 0);
},
get typeName() { return "smallInteger"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return ((type === "bigint" || type === "timestamp") ? .25 : 0);
},
get typeName() { return "bigInteger"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return ((type === "bit" || type === "managedproperty") ? .25 : 0);
},
get typeName() { return "boolean"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return ((type === "primarykey" || type === "lookup" || type ==="lookup" || type ==="customer" || type ==="owner") ? .25 : 0);
},
get typeName() { return "entityId"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return (typeIsString(type) ? .25 : 0);
},
get typeName() { return "string"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (type ==="partylist" || semanticType == "phonepartylist" || semanticType == "emailpartylist" || semanticType == "faxpartylist" || semanticType == "letterpartylist")
return 1;
return 0;
},
get typeName() { return "partylist"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (semanticType == "locale" || semanticType == "language")
return .75;
return 0;
},
get typeName() { return "language"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return stringTypeNameContains(type, internalName, "_LINE") ? .75 : 0;
},
get typeName() { return "addressLine"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return stringTypeNameContains(type, internalName, "_CITY") ? .75 : 0;
},
get typeName() { return "city"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return stringTypeNameContains(type, internalName, "_COUNTRY") ? .75 : 0;
},
get typeName() { return "country"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return stringTypeNameContains(type, internalName, "_COUNTY") ? .75 : 0;
},
get typeName() { return "county"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return nameContains(internalName, "_LATITUDE") ? .75 : 0;
},
get typeName() { return "latitude"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return nameContains(internalName, "_LONGITUDE") ? .75 : 0;
},
get typeName() { return "longitude"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return nameContains(internalName, "_POSTALCODE") ? .75 : 0;
},
get typeName() { return "postalCode"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return stringTypeNameContains(type, internalName, "_STATEORPROVINCE") ? .75 : 0;
},
get typeName() { return "stateOrProvince"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return semanticType === "timezone" ? .75 : 0;
},
get typeName() { return "timezone"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return semanticType === "duration" && nameContains(internalName, "MINUTES") ? .75 : 0;
},
get typeTraitName() { return "means.measurement.duration.minutes"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return (semanticType === "duration") ? .65 : 0;
},
get typeTraitName() { return "means.measurement.duration"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
return stringTypeNameContains(type, internalName, "COLOR") ? .33 : 0;
},
get typeName() { return "colorName"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (type === "datetime" && nameContains(internalName, "CREAT"))
return .7;
return 0;
},
get relationshipName() { return "createdOn"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (type === "datetime" && nameContains(internalName, "MODIF"))
return .7;
return 0;
},
get relationshipName() { return "modifiedOn"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (semanticType === "versionnumber")
return 1;
return 0;
},
get typeTraitName() { return "means.measurement.version"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (internalName === "governmentid")
return 1;
return 0;
},
get typeName() { return "governmentId"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (internalName === "name")
return 1;
return 0;
},
get typeName() { return "name"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (stringTypeNameContains(type, internalName, "NAME"))
return .4;
return 0;
},
get typeName() { return "name"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (stringTypeNameContains(type, internalName, "FIRSTNAME"))
return .6;
return 0;
},
get typeName() { return "firstName"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (stringTypeNameContains(type, internalName, "FULLNAME"))
return .6;
return 0;
},
get typeName() { return "fullName"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (stringTypeNameContains(type, internalName, "LASTNAME"))
return .6;
return 0;
},
get typeName() { return "lastName"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (stringTypeNameContains(type, internalName, "MIDDLENAME"))
return .6;
return 0;
},
get typeName() { return "middleName"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (stringTypeNameContains(type, internalName, "EMAIL") && !stringTypeNameContains(type, internalName, "TEMPLATE"))
return .4;
return 0;
},
get typeName() { return "email"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (semanticType === "email")
return 1;
return 0;
},
get typeName() { return "email"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (stringTypeNameContains(type, internalName, "PHONE"))
return .4;
return 0;
},
get typeName() { return "phone"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (semanticType === "phone")
return .75;
return 0;
},
get typeName() { return "phone"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (semanticType === "phone" && stringTypeNameContains(type, internalName, "CELL"))
return 1;
return 0;
},
get typeName() { return "phoneCell"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (semanticType === "phone" && stringTypeNameContains(type, internalName, "FAX"))
return 1;
return 0;
},
get typeName() { return "phoneFax"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (stringTypeNameContains(type, internalName, "TICKERSYMBOL"))
return .8;
return 0;
},
get typeName() { return "tickerSymbol"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (semanticType === "tickersymbol")
return 1;
return 0;
},
get typeName() { return "tickerSymbol"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (semanticType === "phoneticguide")
return 1;
return 0;
},
get typeTraitName() { return "means.reference.phonetic"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (semanticType === "url")
return 1;
return 0;
},
get typeName() { return "url"; }
},
{
scoreAtttribute(type : string, internalName : string, semanticType : string) : number {
if (stringTypeNameContains(type, internalName, "URL"))
return .4;
return 0;
},
get typeName() { return "url"; }
}
]
}
}
Startup.main();

26
Tools/cdst2cdm/package-lock.json сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,26 @@
{
"name": "cdst2cdm",
"version": "0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@types/es6-promise": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/@types/es6-promise/-/es6-promise-3.3.0.tgz",
"integrity": "sha1-YbVeVU/YB7Vj8VinmG7lPTpaWp0=",
"requires": {
"es6-promise": "4.2.4"
}
},
"@types/node": {
"version": "9.4.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.7.tgz",
"integrity": "sha1-V9gc2YcZ3yyd4Rjy1fOxEg3NcnU="
},
"es6-promise": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha1-3EIhwrFlGHYL2MOaUtjzVvwA7Sk="
}
}
}

Просмотреть файл

@ -0,0 +1,8 @@
{
"name": "cdst2cdm",
"version": "0.0",
"dependencies": {
"@types/es6-promise": "^3.3.0",
"@types/node": "^9.4.7"
}
}

Просмотреть файл

@ -0,0 +1,14 @@
{
"compilerOptions": {
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "ES6",
"sourceMap": true
},
"files": [
"../cdm-types/cdm-types.ts",
"../local-corpus/local-corpus",
"cdst2cdm.ts"
]
}

19
Tools/github-pages-gen/.vscode/launch.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,19 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/github-pages-gen.ts",
"protocol": "inspector",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}

Просмотреть файл

@ -0,0 +1,459 @@
:root {
--back-alternate1: Gainsboro;
--back-alternate2: WhiteSmoke;
--item-back-loading: DimGray;
--item-back-failed: LightCoral;
--item-back-normal: Linen;
--item-back-base: DarkKhaki;
--item-back-extension: Gold;
--item-back-referenced: DarkOrange;
--item-back-referencing: LightGreen;
--table-back-alternate:white;
--item-border-normal: 1px;
--item-margin-normal: 2px;
--item-border-selected: 3px;
--item-margin-selected: 0px;
--list-back-normal: white;
--list-item-margin-normal: 0px;
--list-item-padding-normal: 2px;
--list-item-padding-selected: 0px;
}
.main_container {
position: fixed !important;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: 0;
padding: 0;
}
.fixed_container {
display: block;
position: absolute;
margin: 0;
padding: 0;
}
.resize_bar {
display: block;
position: absolute;
background-color:rgb(97, 97, 97);
cursor: col-resize;
margin: 0;
padding: 0px;
}
.flex_container {
display: flex;
flex-direction: column;
margin: 0;
padding: 0px;
}
.parent_container {
display: flex;
flex-direction: column;
border-style: solid;
border-width: 1px;
margin: 1px;
padding: 2px;
}
.group_title {
font-size: 16px;
padding-top: 1px;
padding-bottom: 1px;
padding-left: 3px;
padding-right: 3px;
cursor: pointer;
user-select: none;
}
.detail_container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
margin: 2px;
}
.detail_item {
background-color: var(--item-back-loading);
font-size: 14px;
border-style: solid;
border-width: var(--item-border-normal);
margin: var(--item-margin-normal);
padding-top: 1px;
padding-bottom: 1px;
padding-left: 3px;
padding-right: 3px;
cursor: pointer;
user-select: none;
}
.key_item {
font-size: 14px;
border-style: solid;
border-width: var(--item-border-normal);
margin: var(--item-margin-normal);
padding-top: 1px;
padding-bottom: 1px;
padding-left: 3px;
padding-right: 3px;
}
.sub_container {
display: flex;
flex-direction: row;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
margin: 2px;
}
.list_container {
display: flex;
flex-direction: column;
border-style: solid;
border-width: 1px;
margin: 2px;
padding: 1px;
overflow-y: scroll;
width: 248px;
min-width: 248px;
}
.list_item {
background-color: var(--list-back-normal);
font-size: 14px;
border-style: solid;
border-width: var(--item-border-normal);
margin: var(--list-item-margin-normal);
padding: var(--list-item-padding-normal);
cursor: pointer;
user-select: none;
}
.dplx_pane,
.status_pane,
.json_pane,
.trait_pane {
display:block;
background-color: var(--back-alternate2);
padding: 2px;
margin-top: 0px;
}
.button {
margin: 2px;
padding: 2px;
cursor: pointer;
user-select: none;
}
.tab {
font-size: 14px;
border-left-style: solid;
border-right-style: solid;
border-top-style: solid;
border-width: 1px;
margin-top: 9px;
margin-left: 2px;
margin-right: 2px;
margin-bottom: 0px;
padding: 2px;
padding-bottom: 0px;
cursor: pointer;
user-select: none;
}
#button_host_pane {
background-color: var(--back-alternate1);
}
#detail_tool_pane {
background-color: var(--back-alternate2);
}
#navigate_host_pane {
background-color: var(--back-alternate2);
overflow-y:auto;
}
#color_key_pane {
background-color: var(--back-alternate1);
border-style: solid;
border-width: 1px;
}
#list_host_pane {
background-color: var(--back-alternate2);
overflow-y:auto;
border-style: solid;
border-width: 1px;
}
#tab_host_pane {
background-color: var(--back-alternate1);
margin: 0px;
padding-bottom: 0px;
padding-left: 4px;
}
#detail_host_pane {
background-color: var(--back-alternate2);
overflow: auto;
border-style: solid;
border-width: 1px;
}
#wait_pane {
background-color: var(--back-alternate1);
margin: 0px;
padding-bottom: 0px;
padding-left: 4px;
text-align: center;
border-style: outset;
padding: 10px;
}
#message_text {
font-size: larger;
}
.status-text-error {
font-weight: bolder;
color: crimson;
}
.property_table
{
border:1px solid black;
border-collapse: collapse;
margin: 4px;
}
.property_table_header
{
padding: 3px;
}
.property_table_header_label
{
border:1px solid black;
font-size: medium;
font-weight: bolder;
color:black;
text-align: right;
padding: 3px;
padding-right: 6px;
}
.property_table_header_value
{
border:1px solid black;
font-size: large;
font-weight: bold;
color:mediumblue;
padding: 3px;
padding-left: 6px;
}
.property_table_detail
{
padding: 2px;
}
.property_table_detail_label
{
border:1px solid black;
font-size: smaller;
font-weight: bolder;
color:black;
text-align: right;
padding: 3px;
padding-right: 6px;
}
.property_table_detail_value
{
border:1px solid black;
font-size: normal;
font-weight: bolder;
color:mediumblue;
padding: 3px;
padding-left: 6px;
}
.trait_table
{
border-collapse: collapse;
border-spacing:0px;
}
.trait_table_row
{
border-spacing:0px;
}
.trait_table_row_table
{
border-collapse: collapse;
border-spacing:0px;
background-color: var(--table-back-alternate);
min-width: 700px;
}
.trait_table_row_table_row
{
border-spacing:0px;
}
.trait_table_detail_name
{
text-align: left;
font-size: medium;
font-weight: bold;
padding-left: 4px;
padding-right: 12px;
padding-top: 12px;
color: mediumblue;
}
.trait_table_detail_explanation
{
padding-top: 12px;
text-align: left;
color:forestgreen
}
.trait_parameter_table_holder
{
padding-left: 16px;
}
.trait_parameter_table
{
border-collapse: collapse;
border-spacing:0px;
}
.trait_parameter_table_header_row
{
border-spacing:0px;
}
.trait_parameter_table_header_name
{
background-color: lightgray;
font-weight:lighter;
font-size: smaller;
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
.trait_parameter_table_header_value
{
background-color: lightgray;
font-weight:lighter;
font-size: smaller;
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
.trait_parameter_table_header_type
{
background-color: lightgray;
font-weight:lighter;
font-size: smaller;
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
.trait_parameter_table_header_explanation
{
background-color: lightgray;
font-weight:lighter;
font-size: smaller;
text-align: left;
border-bottom: 1px solid black;
}
.trait_parameter_table_detail_row
{
border-spacing:0px;
}
.trait_parameter_table_detail_name
{
font-weight:bolder;
font-size: smaller;
text-align: left;
min-width: 128px;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
.trait_parameter_table_detail_value
{
font-weight:bolder;
font-size: medium;
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
color: mediumblue;
}
.trait_parameter_table_detail_type
{
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
min-width: 64px;
}
.trait_parameter_table_detail_explanation
{
font-weight:lighter;
text-align: left;
font-size: small;
min-width: 180px;
border-bottom: 1px solid black;
color: forestgreen;
}
.trait_param_value_table_host
{
overflow-y:auto;
max-height: 200px;
}
.trait_param_value_table
{
border-spacing:2px;
}
.trait_param_value_table_header_row
{
border-spacing:2px;
}
.trait_param_value_table_header_detail
{
font-weight:lighter;
text-align: left;
font-size: small;
background-color:powderblue;
border-bottom: 1px solid black;
}
.trait_param_value_table_detail_row
{
border-spacing:2px;
}
.trait_param_value_table_detail_detail
{
font-weight:bolder;
font-size: small;
border-bottom: 1px solid black;
color:mediumblue ;
}

Просмотреть файл

@ -0,0 +1,258 @@
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>CDM Entity Navigator</title>
<link rel="Stylesheet" href="SchemaViz.css" type="text/css" />
<script>
window.onload = function () {
// check if ie
var sAgent = window.navigator.userAgent;
if (sAgent.indexOf("MSIE") > 0 || sAgent.indexOf("Trident") > 0) {
var classItem = document.getElementsByClassName("main_container")[0];
while (classItem.childNodes.length > 0)
classItem.removeChild(classItem.lastChild);
classItem.textContent = "We're very sorry, this page uses some features not supported by your browser.";
return;
}
initController(document);
initDrag();
}
function onresizeMain() {
if (posPanes)
posPanes(window.innerWidth / 2);
}
</script>
</head>
<body style="height:100%" onresize="onresizeMain()">
<script src="cdm-bundle.js"></script>
<script src="cdm2dplx-bundle.js"></script>
<script src="simpledrag.js"></script>
<script src="viz-controller.js"></script>
<script>
var navPaneMinWidth = 256;
var navPaneMinHeight = 64;
var buttonBarHeight = 34;
var colorKeyHeight = 56;
var listPaneWidth = 260;
var detailPaneMinWidth = 150;
var resizeBarWidth = 6;
var posPanes = function (mid) {
// positions the 6 fixed panes that make up this little app
var innerWidth = window.innerWidth - 0;
var innerHeight = window.innerHeight - 0;
if (innerHeight < navPaneMinHeight + buttonBarHeight * 2 + colorKeyHeight)
innerHeight = navPaneMinHeight + buttonBarHeight * 2 + colorKeyHeight;
if (innerWidth < navPaneMinWidth + listPaneWidth + detailPaneMinWidth)
innerWidth = navPaneMinWidth + listPaneWidth + detailPaneMinWidth;
let xStop0 = 0;
let xStop1 = mid - (resizeBarWidth / 2);
let xStop2 = xStop1 + resizeBarWidth;
let xStop3 = xStop2 + listPaneWidth;
let xStop4 = innerWidth;
let yStop0 = 0;
let yStop1 = yStop0 + buttonBarHeight;
let yStop2 = yStop1 + buttonBarHeight;
let yStop4 = innerHeight;
let yStop3 = yStop4 - colorKeyHeight;
var setShape = function (pane, x1, y1, x2, y2, margin) {
pane.style.top = (y1 + margin) + "px";
pane.style.left = (x1 + margin) + "px";
pane.style.width = (x2 - x1 - margin * 2) + "px";
pane.style.height = (y2 - y1 - margin * 2) + "px";
}
setShape(controller.paneButtonHost, xStop0, yStop0, xStop1, yStop1, 0);
setShape(controller.paneNavHost, xStop0, yStop1, xStop1, yStop3, 0);
setShape(controller.paneColorKey, xStop0, yStop3, xStop1, yStop4, 0);
setShape(controller.paneResize, xStop1, yStop0, xStop2, yStop4, 0);
setShape(controller.paneListTitle, xStop2, yStop0, xStop3, yStop1, 0);
setShape(controller.paneListHost, xStop2, yStop1, xStop3, yStop4, 0);
setShape(controller.paneTabHost, xStop3, yStop0, xStop4, yStop1, 0);
setShape(controller.paneDetailTool, xStop3, yStop1, xStop4, yStop2, 0);
setShape(controller.paneDetailHost, xStop3, yStop2, xStop4, yStop4, 0);
}
function initController() {
controller.document = document;
controller.mainContainer = document.getElementsByClassName("main_container")[0];
controller.navDataGhExpected = navDataGhExpected;
controller.appState = "navigateMode";
controller.navHost = document.getElementById("nav_pane");
controller.paneButtonHost = document.getElementById("button_host_pane");
controller.paneDetailTool = document.getElementById("detail_tool_pane");
controller.paneNavHost = document.getElementById("navigate_host_pane");
controller.paneColorKey = document.getElementById("color_key_pane");
controller.paneResize = document.getElementById("resize_pane");
controller.paneListHost = document.getElementById("list_host_pane");
controller.paneDetailHost = document.getElementById("detail_host_pane");
controller.paneListTitle = document.getElementById("list_title_pane");
controller.paneTabHost = document.getElementById("tab_host_pane");
controller.paneWait = document.getElementById("wait_pane");
controller.listContainer = document.getElementsByClassName("list_container")[0];
controller.statusPane = document.getElementsByClassName("status_pane")[0];
controller.traitsPane = document.getElementsByClassName("traits_pane")[0];
controller.propertiesPane = document.getElementsByClassName("properties_pane")[0];
controller.JsonPane = document.getElementsByClassName("json_pane")[0];
controller.DplxPane = document.getElementsByClassName("dplx_pane")[0];
controller.backButton = document.getElementById("back_tool_button");
controller.onclickFolderItem = onclickFolderItem;
controller.onclickDetailItem = onclickDetailItem;
controller.onclickListItem = onclickListItem;
init();
}
function initDrag() {
controller.paneResize.sdrag(function (el, pageX, startX, pageY, startY, fix) {
var innerWidth = window.innerWidth;
var leftMin = navPaneMinWidth + resizeBarWidth / 2;
var rightMax = innerWidth - (listPaneWidth + detailPaneMinWidth + resizeBarWidth / 2);
fix.skipX = true;
fix.skipX = true;
if (pageX < leftMin) {
fix.pageX = leftMin;
pageX = leftMin;
} else if (pageX > rightMax) {
pageX = rightMax;
fix.pageX = rightMax;
}
posPanes(pageX);
}, null, 'horizontal');
posPanes(window.innerWidth / 2);
}
function onclickGithub() {
controller.mainContainer.messageHandlePing("githubLoadRequest", null, null);
}
function onclickFiles(files) {
controller.mainContainer.messageHandlePing("filesLoadRequest", files, null);
}
function onclickFolderItem(event) {
controller.mainContainer.messageHandlePing("navigateEntitySelect", this.folderState, event.ctrlKey);
}
function onclickDetailItem(event) {
controller.mainContainer.messageHandlePing("navigateEntitySelect", this.entityState, event.ctrlKey);
}
function onclickListItem() {
controller.mainContainer.messageHandlePing("listItemSelect", this.cdmObject, null);
}
function onclickDetailTab(fromId) {
controller.mainContainer.messageHandlePing("detailTabSelect", fromId, null);
}
var navDataGhExpected =
{ d: "INSERTDATA" };
</script>
<span class="main_container">
<span class="fixed_container" id="button_host_pane">
<span class="detail_container">
<button id="github_button" class="button" onclick=onclickGithub()>Load from Github!</button>
<button id="local_button" class="button" onclick="document.getElementById('local-files').click();">Load from files...</button>
<input type="file" multiple directory webkitdirectory accept=".json" id="local-files" name="file" style="display: none" onchange="onclickFiles(document.getElementById('local-files').files)">
</span>
</span>
<span class="fixed_container" id="navigate_host_pane">
<span class="parent_container">
<!--chrome bug with smashing flex boxes when they scroll-->
<span class="parent_container" id="nav_pane" style="border:0px;padding:0px;margin:0px;">
<span>
<br/>
<br/>Add some entities to get started.
<br/>
<br/>
</span>
</span>
</span>
</span>
<span class="fixed_container" id="color_key_pane">
<span class="detail_container">
<span class="group_title">Color Key:</span>
<span class="key_item" style="background-color: var(--item-back-referenced)">Used by Selected</span>
<span class="key_item" style="background-color: var(--item-back-referencing)">Uses the Selected</span>
<span class="key_item" style="background-color: var(--item-back-base)">Base of Selected</span>
<span class="key_item" style="background-color: var(--item-back-extension)">Extension of Selected</span>
</span>
</span>
<span class="resize_bar" id="resize_pane"></span>
<span class="fixed_container" id="list_title_pane" style="background-color: var(--back-alternate1);">
<span class="group_title">
Attributes:
</span>
</span>
<span class="fixed_container" id="list_host_pane">
<span class="list_container" id="attributeList">
</span>
</span>
<span class="fixed_container" id="tab_host_pane">
<span class="detail_container" style="background-color: var(--back-alternate1);">
<span class="tab" id="property_tab" style="background-color: var(--back-alternate1)" onclick="onclickDetailTab('property_tab')">Properties</span>
<span class="tab" id="trait_tab" style="background-color: var(--back-alternate1)" onclick="onclickDetailTab('trait_tab')">Traits</span>
<span class="tab" id="json_tab" style="background-color: var(--back-alternate1)" onclick="onclickDetailTab('json_tab')">JSON</span>
<span class="tab" id="status_tab" style="background-color: var(--back-alternate2)" onclick="onclickDetailTab('status_tab')">Status</span>
<span class="tab" id="dplx_tab" style="background-color: var(--back-alternate1)" onclick="onclickDetailTab('dplx_tab')">DPLX</span>
</span>
</span>
<span class="fixed_container" id="detail_tool_pane" style="border-style:inset">
<span class="detail_container">
<button id="copy_tool_button" class="button" onclick=copyActivePane()>Copy</button>
<button id="back_tool_button" class="button" style="display: none" onclick=popJsonPane()>Go Back</button>
</span>
</span>
<span class="fixed_container" id="detail_host_pane">
<span class="status_pane">
</span>
<span class="traits_pane">
</span>
<span class="properties_pane">
</span>
<span class="json_pane">
</span>
<span class="dplx_pane">
</span>
</span>
<span class="fixed_container" id="wait_pane" style="display:none">
<span id="message_text">
<br/>Loading and resolving entity documents, please wait...
</span>
</span>
</span>
</body>
</html>

Просмотреть файл

@ -0,0 +1,228 @@
import * as cdm from "../cdm-types/cdm-types"
import { readFileSync, writeFileSync, readFile, mkdirSync, existsSync, createReadStream, readdirSync, statSync } from "fs";
import { relative } from "path";
export interface entityState {
id : string;
folderId : string;
name : string;
path : string;
docName : string;
UEName : string;
loadState : number;
description : string;
createUX : boolean;
}
export interface folder {
id : string;
name : string
entities : entityState[];
folders : folder[];
}
export interface navigatorData {
root : folder;
readRoot : string;
sourceRoot : string;
}
export interface indexEntry {
name : string;
jsonLink : string;
locationFragment : string;
locationLink : string;
documentationLink : string;
level : number;
description : string;
}
export interface contentConstants {
docsRoot : string;
coreDir : string;
docLocationRoot : string;
ghSourceRoot : string;
ghRawRoot : string;
brTemplate : string;
brTokenScript : string;
brTokenHTML : string;
brResultFile : string;
mdTemplate : string;
mdToken : string;
}
export function collectGithubFolderData(corpus : cdm.Corpus) : folder {
let collectFolderHierarchy = (folder : cdm.ICdmFolderDef, hier : folder) => {
folderId ++;
let entNumber = 0;
hier.name = folder.getName();
hier.id = "f" + (folderId * 10000).toString();
if (folder.getName() != "" && folder.getDocuments() && folder.getDocuments().length)
{
hier.entities = new Array<entityState>();
folder.getDocuments().forEach(doc => {
if (doc.getDefinitions() && doc.getDefinitions().length)
doc.getDefinitions().forEach(def => {
if (def.getObjectType() == cdm.cdmObjectType.entityDef) {
entNumber ++;
let id = "e" + (entNumber + folderId * 10000).toString();
// for each entity defined
// get description
let UEName : string;
let description = "";
let locEnt : cdm.ICdmConstantEntityDef;
let pVal: cdm.ParameterValue;
let rtDesc : cdm.ResolvedTrait;
if ((rtDesc = def.getResolvedTraits().find("is.localized.describedAs")) &&
(pVal=rtDesc.parameterValues.getParameterValue("localizedDisplayText")) &&
(pVal.value) &&
(locEnt = pVal.value.getObjectDef() as cdm.ICdmConstantEntityDef)) {
description = locEnt.lookupWhere("displayText", "languageTag", "en");
}
if ((rtDesc = def.getResolvedTraits().find("is.CDS.sourceNamed")) &&
(pVal = rtDesc.parameterValues.getParameterValue("name")))
UEName = pVal.valueString;
if (!UEName)
UEName = def.getName();
hier.entities.push({id:id, folderId:hier.id, name:def.getName(), path:folder.getRelativePath(),
docName:doc.getName(), loadState : 0, description : description, UEName : UEName, createUX : true});
}
});
});
}
if (folder.getSubFolders() && folder.getSubFolders().length)
{
hier.folders = new Array<folder>();
folder.getSubFolders().forEach(sub => {
let subHier : folder = {id:"0", name:undefined, entities:undefined, folders:undefined}
hier.folders.push(subHier);
collectFolderHierarchy(sub, subHier);
});
}
}
let stateList = new Array<entityState>();
let hierRoot : folder = {id:"0", name:"", entities:undefined, folders:undefined};
let folderId = 0;
collectFolderHierarchy(corpus, hierRoot)
return hierRoot;
}
export function createGithubBrowser(hierRoot : folder, consts : contentConstants) {
let navData : navigatorData = {readRoot:consts.ghRawRoot, sourceRoot:consts.ghSourceRoot, root:hierRoot };
let dataChunk = JSON.stringify(navData);
// read the template html and break it into chunks
let fullTemplate = readFileSync(consts.brTemplate, {encoding:"utf-8"});
let content = fullTemplate.replace(consts.brTokenScript, dataChunk);
// write the result
writeFileSync(consts.brResultFile, content, {encoding:"utf-8"});
}
export function createGithubIndex(hierRoot : folder, consts : contentConstants) {
let createMarkdownIndex = (path : string, hier : folder, locationParent : string, locationThis : string) => {
let content = "";
let appendLine = (toAdd : string) => {
content += toAdd + "\n";
}
let makeLocationFragment = (locationParent : string, locationThis : string) : string => {
if (locationParent)
return `${locationParent}/${locationThis}/`;
else if (locationThis)
return `${locationThis}/`;
return undefined;
}
let locationFragment = makeLocationFragment(locationParent, locationThis) ;
if (locationFragment)
appendLine(`## ${locationFragment}`);
let collectAllEntities = (hier : folder, locationParent : string, locationThis : string, level : number, accumulateIn : Array<indexEntry>) => {
let locationFragment = makeLocationFragment(locationParent, locationThis);
if (hier.entities) {
hier.entities.forEach(ent => {
accumulateIn.push({name : ent.name,
jsonLink : consts.ghSourceRoot + ent.path + ent.docName,
locationFragment : locationFragment,
locationLink : consts.ghSourceRoot + ent.path,
description : ent.description,
documentationLink : consts.docLocationRoot + ent.UEName,
level : level});
});
}
if (hier.folders) {
hier.folders.forEach(fold => {
collectAllEntities(fold, locationThis, fold.name, level + 1, accumulateIn);
});
}
}
let allIndex = new Array<indexEntry>();
let dupName = false;
collectAllEntities(hier, "", locationThis, 0, allIndex);
// sort by entity name and level
allIndex = allIndex.sort((l, r) : number => {
if (l.name < r.name)
return -1;
if (l.name > r.name)
return 1;
dupName = true;
if (l.level < r.level)
return -1;
if (l.level > r.level)
return 1;
return 0;
});
if (dupName) {
appendLine(">Note: Entities with multiple rows in the index below indicate that there is a base version of the entity (first occurrence), as well as extended versions with additional attributes added (e.g.with Sales / Services / Marketing specific additions)");
appendLine("");
}
appendLine("| Entity Name | Location: | Description | External Link |");
appendLine("|:--- |:--- |:--- |:--- |");
allIndex.forEach(i => {
content += `|[**${i.name}**](${i.jsonLink})|`;
if (i.locationFragment != null)
content += `[${i.locationFragment}](${i.locationLink})|`;
else
content += " |";
if (i.description!= null)
content += `${i.description}|`;
else
content += " |";
appendLine(`[Docs](${i.documentationLink})|`);
});
if (!locationFragment) {
// special case for the top directory, insert the link to the nav tool and other help
let template = readFileSync(consts.mdTemplate, "utf8");
content = template.replace(consts.mdToken, content);
}
writeFileSync(path + "README.md", content, {encoding:"utf-8"});
if (hier.folders) {
hier.folders.forEach(fold => {
createMarkdownIndex(path + fold.name + "/", fold, locationThis, fold.name);
});
}
}
createMarkdownIndex(consts.coreDir, hierRoot, "", "");
}

Просмотреть файл

@ -0,0 +1,51 @@
import * as cdm from "../cdm-types/cdm-types"
import * as ghc from "../github-pages-gen/gh-content-gen"
import * as loc from "../local-corpus/local-corpus"
// browserify ..\tools\cdm-types\cdm-types.js --o cdm-bundle.js --standalone cdm
// browserify ..\tools\cdm2dplx\cdm2dplx.js --o cdm2dplx-bundle.js --standalone cdm2dplx
class Startup {
public static main(): number {
let cdmCorpus : cdm.Corpus;
let pathToDocRoot = "../../schemaDocuments";
// run over input folders recursively and process them into a hierarchical corpus of schema docs
cdmCorpus = new cdm.Corpus(pathToDocRoot);
cdmCorpus.statusLevel = cdm.cdmStatusLevel.progress;
console.log('reading source files');
loc.loadCorpusFolder(cdmCorpus, cdmCorpus.addFolder("core"), ["analyticalCommon"], "");
let statusRpt = loc.consoleStatusReport;
loc.resolveLocalCorpus(cdmCorpus, cdm.cdmStatusLevel.error, statusRpt).then((r:boolean) =>{
let docsRoot = "../../";
let consts : ghc.contentConstants = {
docsRoot : docsRoot,
brTemplate : "SchemaViz.html",
brTokenScript : "{ d: \"INSERTDATA\" }",
brTokenHTML : "NOTUSEDANYMORE",
brResultFile : docsRoot + "Docs/index.html",
mdTemplate : "readme_header.md",
mdToken : "INSERT_DIRECTORY_HERE",
coreDir : docsRoot + "schemaDocuments/",
docLocationRoot : "https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/",
ghSourceRoot : "https://github.com/Microsoft/CDM/blob/master/schemaDocuments",
ghRawRoot : "https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments"
};
let hier = ghc.collectGithubFolderData(cdmCorpus);
ghc.createGithubBrowser(hier, consts);
ghc.createGithubIndex(hier, consts);
console.log('done');
}).catch();
return 0;
}
}
Startup.main();

77
Tools/github-pages-gen/package-lock.json сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,77 @@
{
"name": "github-pages-gen",
"version": "0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@types/es6-promise": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/@types/es6-promise/-/es6-promise-3.3.0.tgz",
"integrity": "sha1-YbVeVU/YB7Vj8VinmG7lPTpaWp0=",
"requires": {
"es6-promise": "4.2.4"
}
},
"@types/node": {
"version": "9.4.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.7.tgz",
"integrity": "sha1-V9gc2YcZ3yyd4Rjy1fOxEg3NcnU="
},
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
},
"async": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
"integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
},
"es6-promise": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha1-3EIhwrFlGHYL2MOaUtjzVvwA7Sk="
},
"node-fetch": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
"integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U="
},
"optimist": {
"version": "0.3.7",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
"integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
"requires": {
"wordwrap": "0.0.3"
}
},
"source-map": {
"version": "0.1.43",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
"integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
"requires": {
"amdefine": "1.0.1"
}
},
"std": {
"version": "0.1.40",
"resolved": "https://registry.npmjs.org/std/-/std-0.1.40.tgz",
"integrity": "sha1-Nnil9lCU2eG2teJu2/wCErg0K3E="
},
"uglify-js": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.0.tgz",
"integrity": "sha1-LN7BbTeKiituz7aYl4TPi3rlSR8=",
"requires": {
"async": "0.2.10",
"optimist": "0.3.7",
"source-map": "0.1.43"
}
},
"wordwrap": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
}
}
}

Просмотреть файл

@ -0,0 +1,8 @@
{
"name": "github-pages-gen",
"version": "0.0",
"dependencies": {
"@types/es6-promise": "^3.3.0",
"@types/node": "^9.4.7"
}
}

Просмотреть файл

@ -0,0 +1,14 @@
### Click this image to explore the CDM entities using the Entity Navigator:
[![Click to Launch the Entity Navigator](NavSnip.jpg)](https://microsoft.github.io/CDM/)
---
### Directory of CDM entities:
INSERT_DIRECTORY_HERE
---
### Additional CDM files:
| File | Description |
|:--- |:--- |
|[**schema.cdm.json**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/schema.cdm.json)|A JSON schema that can be used to validate and aid with editing of the other documents in this set.|
|[**primitives.cdm.json**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/primitives.cdm.json)|The fundamental dataTypes, traits, entities used by the CDM object model.|
|[**meanings.cdm.json**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/meanings.cdm.json)|A collection of traits that express an ontology of common business ideas along with some convenient dataTypes.|
|[**foundations.cdm.json**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/foundations.cdm.json)|Common mechanisms used to express more complex ideas in standard ways thoughout this entity set.|

Просмотреть файл

@ -0,0 +1,17 @@
{
"compilerOptions": {
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "ES6",
"sourceMap": true,
},
"files": [
"../cdm-types/cdm-types.ts",
"../cdm2dplx/cdm2dplx.ts",
"../local-corpus/local-corpus.ts",
"../github-pages-gen/gh-content-gen.ts",
"viz-controller.ts",
"github-pages-gen.ts",
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,109 @@
import * as cdm from "../cdm-types/cdm-types"
import { readFileSync, writeFileSync, readFile, mkdirSync, existsSync, readdirSync, statSync } from "fs";
export function consoleStatusReport(level: cdm.cdmStatusLevel, msg : string, path : string) {
if (level == cdm.cdmStatusLevel.error)
console.error(`Err: ${msg} @ ${path}`) ;
else if (level == cdm.cdmStatusLevel.warning)
console.warn(`Wrn: ${msg} @ ${path}`);
else if (level == cdm.cdmStatusLevel.progress)
console.log(msg);
}
export function resolveLocalCorpus(cdmCorpus : cdm.Corpus, stopLevel : cdm.cdmStatusLevel, statusRpt : cdm.RptCallback) : Promise<boolean> {
return new Promise<boolean>((localCorpusResolve, localCorpusReject) => {
console.log('resolving imports');
// first resolve all of the imports to pull other docs into the namespace
cdmCorpus.resolveImports((uri : string) : Promise<[string, string]> =>{
return new Promise<[string, string]>((resolve, reject) => {
// resolve imports take a callback that askes for promise to do URI resolution.
// so here we are, working on that promise
readFile(cdmCorpus.rootPath + uri, "utf8", (err : NodeJS.ErrnoException, data:string)=>{
if(err)
reject([uri, err]);
else
resolve([uri, data]);
})
});
}, statusRpt).then((r:boolean) => {
// success resolving all imports
console.log(r);
let startTime = Date.now();
console.log('validate schema:');
if (r) {
let validateStep = (currentStep:cdm.cdmValidationStep)=> {
return cdmCorpus.resolveReferencesAndValidate(currentStep, statusRpt, stopLevel).then((nextStep:cdm.cdmValidationStep) => {
if (nextStep == cdm.cdmValidationStep.error) {
console.log('validation step failed');
}
else if (nextStep == cdm.cdmValidationStep.finished) {
console.log('validation finished');
console.log(Date.now() - startTime);
localCorpusResolve(true);
}
else {
// success resolving all imports
return validateStep(nextStep);
}
}).catch((reason)=> {
console.log('exception during validation');
console.log(reason);
localCorpusReject(reason);
});
}
return validateStep(cdm.cdmValidationStep.start);
}
});
});
}
// "analyticalCommon"
// "applicationCommon"
export function loadCorpusFolder(corpus : cdm.Corpus, folder : cdm.ICdmFolderDef, ignoreFolders : string[], version : string) {
let path = corpus.rootPath + folder.getRelativePath();
if (ignoreFolders && ignoreFolders.find(ig => ig == folder.getName()))
return;
let endMatch = (version ? "." + version : "" )+ ".cdm.json";
// for every document or directory
readdirSync(path).forEach(dirEntry => {
let entryName = path + dirEntry;
let stats = statSync(entryName);
if (stats.isDirectory()) {
this.loadCorpusFolder(corpus, folder.addFolder(dirEntry), ignoreFolders, version);
}
else {
let postfix = dirEntry.slice(dirEntry.indexOf("."));
if (postfix == endMatch) {
let sourceDoc = readFileSync(entryName, "utf8");
corpus.addDocumentFromContent(folder.getRelativePath() + dirEntry, sourceDoc);
}
}
});
}
export function persistCorpus(cdmCorpus : cdm.Corpus) {
if (cdmCorpus && cdmCorpus.getSubFolders() && cdmCorpus.getSubFolders().length == 1)
persistCorpusFolder(cdmCorpus.rootPath, cdmCorpus.getSubFolders()[0]);
}
export function persistCorpusFolder(rootPath : string, cdmFolder : cdm.ICdmFolderDef): void {
if (cdmFolder) {
let folderPath = rootPath + cdmFolder.getRelativePath();
if (!existsSync(folderPath))
mkdirSync(folderPath);
if (cdmFolder.getDocuments())
cdmFolder.getDocuments().forEach(doc => {
let content = JSON.stringify(doc, null, 4);
writeFileSync(folderPath + doc.getName(), content, "utf8");
});
if (cdmFolder.getSubFolders()) {
cdmFolder.getSubFolders().forEach(f => {
persistCorpusFolder(rootPath, f);
});
}
}
}

23
Tools/local-corpus/package-lock.json сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,23 @@
{
"name": "local-corpus",
"version": "0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@types/node": {
"version": "10.3.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.3.tgz",
"integrity": "sha512-/gwCgiI2e9RzzZTKbl+am3vgNqOt7a9fJ/uxv4SqYKxenoEDNVU3KZEadlpusWhQI0A0dOrZ0T68JYKVjzmgdQ=="
},
"es6-promise": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ=="
},
"node-bin-setup": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.0.6.tgz",
"integrity": "sha512-uPIxXNis1CRbv1DwqAxkgBk5NFV3s7cMN/Gf556jSw6jBvV7ca4F9lRL/8cALcZecRibeqU+5dFYqFFmzv5a0Q=="
}
}
}

Просмотреть файл

@ -0,0 +1,8 @@
{
"name": "local-corpus",
"version": "0.0",
"dependencies": {
"@types/node": "^10.3.3",
"es6-promise": "^4.2.4"
}
}

Просмотреть файл

@ -0,0 +1,12 @@
{
"compilerOptions": {
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "ES6",
"sourceMap": true,
},
"files": [
"local-corpus.ts",
]
}

17
Tools/make-version-explicit/.vscode/launch.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,17 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${file}",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}

Просмотреть файл

@ -0,0 +1,77 @@
import * as cdm from "../cdm-types/cdm-types"
import * as loc from "../local-corpus/local-corpus";
import { writeFileSync, mkdirSync, existsSync } from "fs";
class Startup {
public static main(): number {
let cdmCorpus : cdm.Corpus;
let pathToDocRoot = "../../schemaDocuments";
// run over input folders recursively and process them into a hierarchical corpus of schema docs
cdmCorpus = new cdm.Corpus(pathToDocRoot);
cdmCorpus.statusLevel = cdm.cdmStatusLevel.progress;
console.log('reading source files');
loc.loadCorpusFolder(cdmCorpus, cdmCorpus.addFolder("core"), ["analyticalCommon"], "");
let statusRpt = loc.consoleStatusReport;
loc.resolveLocalCorpus(cdmCorpus, cdm.cdmStatusLevel.error, statusRpt).then((r:boolean) =>{
this.makeVersionExplicitCopy(cdmCorpus, "0.6");
loc.persistCorpus(cdmCorpus);
console.log('done');
}).catch();
return 0;
}
public static makeVersionExplicitCopy(cdmCorpus : cdm.Corpus, version : string) {
let addVersionToName = (name : string, version : string) : string => {
name = name.slice(0, name.length - "cdm.json".length);
name += version + ".cdm.json";
return name;
}
let versionDocsInFolders = (folder : cdm.ICdmFolderDef) => {
let documents = folder.getDocuments();
if (documents && documents.length)
{
documents.forEach(doc => {
doc.setName(addVersionToName(doc.getName(), version));
let imports = doc.getImports();
if (imports && imports.length) {
imports.forEach(imp => {
imp.uri = addVersionToName(imp.uri, version);
});
}
let definitions = doc.getDefinitions();
if (definitions && definitions.length) {
definitions.forEach(def => {
if (def.getObjectType() == cdm.cdmObjectType.entityDef) {
// if the entity is already expressing a version trait, then explicitly exhibit one from the entity with the fixed value
// except for the baseclass
let ent = def as cdm.ICdmEntityDef;
if (ent.getName() != "CdmObject" && ent.getResolvedTraits() && ent.getResolvedTraits().find("is.CDM.entityVersion")) {
let tRef = ent.addExhibitedTrait("is.CDM.entityVersion", false);
tRef.addArgument(undefined, cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, version));
}
}
});
}
});
}
if (folder.getSubFolders()) {
folder.getSubFolders().forEach(f => {
versionDocsInFolders(f);
});
}
}
versionDocsInFolders(cdmCorpus);
}
}
Startup.main();

47
Tools/make-version-explicit/package-lock.json сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,47 @@
{
"name": "make-version-explicit",
"version": "1.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@types/node": {
"version": "8.10.19",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.19.tgz",
"integrity": "sha512-+PU57o6DtOSx0/algmxgCwWrmCiomwC/K+LPfXonT0tQMbNTjHEqVzwL9dFEhFoPmLFIiSWjRorLH6Z0hJMT+Q=="
},
"log": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/log/-/log-1.4.0.tgz",
"integrity": "sha1-S6HYkP3iSbAx3KA7w36q8yVlbxw="
},
"performance": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/performance/-/performance-1.1.1.tgz",
"integrity": "sha1-Rt77WFIhOm1qYEYfYCuVDkcjgZQ=",
"requires": {
"log": "1.4.0",
"prototypes": "2.3.3",
"stdio": "0.2.7",
"testing": "1.1.1"
}
},
"prototypes": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/prototypes/-/prototypes-2.3.3.tgz",
"integrity": "sha1-jTT8v1m2ZKZcpciMbhBlEy6Z/dE="
},
"stdio": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/stdio/-/stdio-0.2.7.tgz",
"integrity": "sha1-ocV9oQ/hz6oMO/aDydB0PRtmCDk="
},
"testing": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/testing/-/testing-1.1.1.tgz",
"integrity": "sha1-mgVzBVX1LW2ckUCDu6VaxIztkgM=",
"requires": {
"log": "1.4.0"
}
}
}
}

Просмотреть файл

@ -0,0 +1,9 @@
{
"name": "make-version-explicit",
"version": "1.0",
"dependencies": {
"@types/es6-promise": "^3.3.0",
"@types/node": "^8.10.19",
"performance": "^1.1.1"
}
}

Просмотреть файл

@ -0,0 +1,14 @@
{
"compilerOptions": {
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "ES6",
"sourceMap": true
},
"files": [
"../cdm-types/cdm-types.ts",
"../local-corpus/local-corpus.ts",
"make-version-explicit.ts"
]
}

19
Tools/tom2cdm/.vscode/launch.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,19 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/test-driver.ts",
"protocol": "inspector",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}

Просмотреть файл

@ -0,0 +1,8 @@
{
"name": "tom2cdm",
"version": "0.0",
"dependencies": {
"@types/es6-promise": "^3.3.0",
"@types/node": "^9.4.7"
}
}

Просмотреть файл

@ -0,0 +1,40 @@
import * as cdm from "../cdm-types/cdm-types";
import * as loc from "../local-corpus/local-corpus"
import {tomModelToCdmCorpus} from "../tom2cdm/tom2cdm";
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
class Startup {
public static main(): number {
console.log('reading source file');
let cdmCorpus : cdm.Corpus;
let pathToDocRoot = "../../schemaDocuments";
let pathToOutput = "retail";
// create an empty corpus with the supporting files at the root
cdmCorpus = new cdm.Corpus(pathToDocRoot);
cdmCorpus.statusLevel = cdm.cdmStatusLevel.info;
let folderResult = cdmCorpus.addFolder(pathToOutput);
//let modelJson = JSON.parse(readFileSync("model.bim", "utf8"));
//let modelJson = JSON.parse(readFileSync("/cdsa schemas/CreditAndCollectionsImportMode.xmla", "utf8"));
let modelJson = JSON.parse(readFileSync("/cdsa schemas/retail/XMLAQuery1.xmla", "utf8"));
let converter = new tomModelToCdmCorpus();
converter.addToCorpus(folderResult, modelJson);
console.log('persist Corpus:');
loc.persistCorpus(cdmCorpus);
loc.resolveLocalCorpus(cdmCorpus, cdm.cdmStatusLevel.error, loc.consoleStatusReport).then((r:boolean) =>{
console.log('done');
}).catch();
return 0;
}
}
Startup.main();

208
Tools/tom2cdm/tom2cdm.ts Normal file
Просмотреть файл

@ -0,0 +1,208 @@
import * as cdm from "../cdm-types/cdm-types"
export class tomModelToCdmCorpus {
constructor() {
}
public addToCorpus(folderResult : cdm.ICdmFolderDef, model : any) {
interface tomRelationship {
name : string;
fromTable : string;
fromColumn : string;
toTable : string;
toColumn : string;
}
// add a master import for the folder
let masterImport = "_allImports.cdm.json";
let cdmDocImp : cdm.ICdmDocumentDef = folderResult.addDocument("_allImports.cdm.json", "");
cdmDocImp.addImport("/foundations.cdm.json", "");
// find the "tables" node. all the rest might be in different shapes depending on the input doc
let findArray = (from : any, seek : string) : any[] => {
if (typeof(from) == 'object') {
for (let child in from) {
if (child == seek && typeof(from[child]) == 'object' && (from[child] instanceof Array))
return from[child];
let childResult = findArray(from[child], seek);
if (childResult)
return childResult;
}
}
}
let tables = findArray(model, "tables");
let relationships = findArray(model, "relationships");
let entAtt2Rel = new Map<string, tomRelationship[]>();
let imports = new Set<string>();
let fixName = (original: string, firstUpper : boolean) : string => {
let result = original.replace(/([-_])/g, " ");
let parts = result.split(" ");
result = "";
parts.forEach(p => {
let first = p[0];
// if the string contains more than one upper char, leave it alone.
if (!p.match(/[A-Z][\S].[A-Z]/))
first = ((firstUpper || result != "") ? p[0].toUpperCase() : p[0].toLowerCase())
result += first + p.slice(1);
});
return result;
}
if (relationships) {
// first collect all relationships in the model so that they can be added as attributes on the 'outgoing' entity
relationships.forEach(rel => {
let tomRel = rel as tomRelationship;
tomRel.fromTable = fixName(tomRel.fromTable, true);
tomRel.fromColumn = fixName(tomRel.fromColumn, false);
tomRel.toTable = fixName(tomRel.toTable, true);
tomRel.toColumn = fixName(tomRel.toColumn, false);
let relKey = tomRel.fromTable + "_@_" + tomRel.fromColumn;
if (!entAtt2Rel.has(relKey)) {
entAtt2Rel.set(relKey, new Array<tomRelationship>());
}
entAtt2Rel.get(relKey).push(tomRel);
// import the entities that get referenced from other files
if (!imports.has(tomRel.toTable)) {
imports.add(tomRel.toTable);
cdmDocImp.addImport(tomRel.toTable + ".cdm.json", "");
}
});
}
if (tables) {
let getLocalizedTableTrait = (sourceText : string, traitName : string) : cdm.ICdmTraitRef => {
if (sourceText) {
let tRef = cdm.Corpus.MakeObject<cdm.ICdmTraitRef>(cdm.cdmObjectType.traitRef, traitName);
// make the argument nothing but a ref to a constant entity, safe since there is only one param for the trait and it looks cleaner
let cEnt = cdm.Corpus.MakeObject<cdm.ICdmConstantEntityDef>(cdm.cdmObjectType.constantEntityDef);
cEnt.setEntityShape(cdm.Corpus.MakeRef(cdm.cdmObjectType.entityRef, "localizedTable"));
cEnt.setConstantValues([["en", sourceText]]);
tRef.addArgument(undefined, cdm.Corpus.MakeRef(cdm.cdmObjectType.constantEntityRef, cEnt));
return tRef;
}
}
let entities = new Array<[cdm.ICdmEntityDef, any]>();
let table:any;
tables.forEach(table => {
let entName = fixName(table.name, true);
// skip some goo
if (table.isHidden) {
let iRemove = cdmDocImp.getImports().findIndex(imp=>{return imp.uri.startsWith(entName)})
if (iRemove >= 0)
cdmDocImp.getImports().splice(iRemove, 1);
}
else {
// one doc for each table
// imports
let cdmDocument = folderResult.addDocument(entName + ".cdm.json", "");
cdmDocument.addImport(masterImport, null);
// entity def
let cdmEntity = cdmDocument.addDefinition<cdm.ICdmEntityDef>(cdm.cdmObjectType.entityDef, entName);
entities.push([cdmEntity, table]);
// the common base
cdmEntity.setExtendsEntityRef(cdm.Corpus.MakeRef(cdm.cdmObjectType.entityRef, "CdmObject"));
// add descriptive text
if (table.description)
cdmEntity.addExhibitedTrait(getLocalizedTableTrait(table.description, "is.localized.describedAs"));
}
});
entities.forEach(entTab => {
let cdmEntity = entTab["0"];
let table = entTab["1"];
let entName = cdmEntity.getName();
// attributes
if (table.columns) {
// create an attribute group with a trait that lists the path.
let attGroupAll = cdm.Corpus.MakeObject<cdm.ICdmAttributeGroupDef>(cdm.cdmObjectType.attributeGroupDef, "attributesAddedAtThisScope");
let tRef = cdm.Corpus.MakeObject<cdm.ICdmTraitRef>(cdm.cdmObjectType.traitRef, "is.CDM.attributeGroup");
// make the argument nothing but a ref to a constant entity, safe since there is only one param for the trait and it looks cleaner
let cEnt = cdm.Corpus.MakeObject<cdm.ICdmConstantEntityDef>(cdm.cdmObjectType.constantEntityDef);
cEnt.setEntityShape(cdm.Corpus.MakeRef(cdm.cdmObjectType.entityRef, "attributeGroupSet"));
let groupPath = folderResult.getRelativePath() + cdmEntity.getName() + ".cdm.json/" + cdmEntity.getName() + "/hasAttributes/attributesAddedAtThisScope";
cEnt.setConstantValues([[groupPath]]);
tRef.addArgument(undefined, cdm.Corpus.MakeRef(cdm.cdmObjectType.constantEntityRef, cEnt));
attGroupAll.addExhibitedTrait(tRef);
cdmEntity.addAttributeDef(cdm.Corpus.MakeRef(cdm.cdmObjectType.attributeGroupRef, attGroupAll) as cdm.ICdmAttributeGroupRef);
let createTypeAttribute = (col : any) : cdm.ICdmTypeAttributeDef => {
let cdmAtt = cdm.Corpus.MakeObject<cdm.ICdmTypeAttributeDef>(cdm.cdmObjectType.typeAttributeDef, fixName(col.name, false));
let relRef : cdm.ICdmRelationshipRef = cdm.Corpus.MakeRef(cdm.cdmObjectType.relationshipRef, "hasA");
cdmAtt.setRelationshipRef(relRef);
// figure out a data type
let dataTypeName = "string";
if (col.dataType) {
if (col.dataType == "int64")
dataTypeName = "bigInteger";
else
dataTypeName = col.dataType;
}
let dataType = cdm.Corpus.MakeObject<cdm.ICdmDataTypeRef>(cdm.cdmObjectType.dataTypeRef, dataTypeName);
cdmAtt.setDataTypeRef(dataType);
cdmAtt.addAppliedTrait(getLocalizedTableTrait(col.description, "is.localized.describedAs"));
return cdmAtt;
}
table.columns.forEach(col => {
let attName = fixName(col.name, false);
// is this a foreign key?
let tomRels = entAtt2Rel.get(entName + "_@_" + attName);
// to an entity that was found earlier?
if (tomRels && entities.find(entTabSeek => {return entTabSeek["0"].getName() == tomRels[0].toTable})) {
let makeRefEntity = (tomRel : tomRelationship) : cdm.ICdmEntityRef =>{
let er : cdm.ICdmEntityRef = cdm.Corpus.MakeObject(cdm.cdmObjectType.entityRef, tomRel.toTable);
let tRef = er.addAppliedTrait("is.identifiedBy");
tRef.addArgument(undefined, cdm.Corpus.MakeObject(cdm.cdmObjectType.stringConstant, tomRel.toTable + "/(resolvedAttributes)/" +tomRel.toColumn));
return er;
}
let cdmAtt = cdm.Corpus.MakeObject<cdm.ICdmAttributeDef>(cdm.cdmObjectType.entityAttributeDef, null);
// make a list of all referenced entities
let entList = new Array<cdm.ICdmEntityRef>();
// entity relationship. to array or single?
if (tomRels.length > 1) {
tomRels.forEach(tomRel => {
entList.push(makeRefEntity(tomRel));
});
(cdmAtt as cdm.ICdmEntityAttributeDef).setEntityRef(entList);
}
else {
entList.push(makeRefEntity(tomRels[0]));
(cdmAtt as cdm.ICdmEntityAttributeDef).setEntityRef(entList[0]);
}
let rel = cdm.Corpus.MakeObject<cdm.ICdmRelationshipRef>(cdm.cdmObjectType.relationshipRef, "referencesA")
let tRef = rel.addAppliedTrait("referencesA/exhibitsTraits/does.referenceEntity");
tRef.addArgument("addedAttribute", createTypeAttribute(col));
cdmAtt.setRelationshipRef(rel);
attGroupAll.addMemberAttributeDef(cdmAtt);
}
else {
attGroupAll.addMemberAttributeDef(createTypeAttribute(col));
}
});
}
});
}
}
}

Просмотреть файл

@ -0,0 +1,15 @@
{
"compilerOptions": {
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "ES6",
"sourceMap": true
},
"files": [
"../cdm-types/cdm-types.ts",
"../local-corpus/local-corpus",
"../tom2cdm/tom2cdm.ts",
"test-driver.ts",
]
}

Просмотреть файл

@ -1,11 +1,14 @@
:root {
--back-alternate1: rgb(220, 220, 220);
--back-alternate2: rgb(245, 245, 245);
--item-back-normal: rgb(253, 245, 230);
--item-back-base: rgb(189, 183, 103);
--item-back-extension: rgb(255, 215, 0);
--item-back-referenced: rgb(255, 140, 0);
--item-back-referencing: rgb(144, 238, 144);
--back-alternate1: Gainsboro;
--back-alternate2: WhiteSmoke;
--item-back-loading: DimGray;
--item-back-failed: LightCoral;
--item-back-normal: Linen;
--item-back-base: DarkKhaki;
--item-back-extension: Gold;
--item-back-referenced: DarkOrange;
--item-back-referencing: LightGreen;
--table-back-alternate:white;
--item-border-normal: 1px;
--item-margin-normal: 2px;
--item-border-selected: 3px;
@ -18,31 +21,46 @@
.main_container {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: flex;
flex-direction: row;
border-style: solid;
border-width: 1px;
position: fixed !important;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: 0;
padding: 0;
}
.fixed_container {
display: block;
position: absolute;
margin: 0;
padding: 0;
}
.resize_bar {
display: block;
position: absolute;
background-color:rgb(97, 97, 97);
cursor: col-resize;
margin: 0;
padding: 0px;
}
.flex_container {
display: flex;
flex-direction: column;
margin: 0;
padding: 0px;
}
.parent_container {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: flex;
flex-direction: column;
border-style: solid;
border-width: 1px;
margin: 2px;
padding: 1px;
margin: 1px;
padding: 2px;
}
.group_title {
@ -51,21 +69,19 @@
padding-bottom: 1px;
padding-left: 3px;
padding-right: 3px;
cursor: pointer;
user-select: none;
}
.detail_container {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: flex;
flex-direction: row;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
margin: 2px;
}
.detail_item {
background-color: var(--item-back-normal);
background-color: var(--item-back-loading);
font-size: 14px;
border-style: solid;
border-width: var(--item-border-normal);
@ -75,6 +91,7 @@
padding-left: 3px;
padding-right: 3px;
cursor: pointer;
user-select: none;
}
.key_item {
@ -89,9 +106,6 @@
}
.sub_container {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: flex;
flex-direction: row;
-webkit-flex-wrap: wrap;
@ -100,9 +114,6 @@
}
.list_container {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: flex;
flex-direction: column;
border-style: solid;
@ -110,8 +121,8 @@
margin: 2px;
padding: 1px;
overflow-y: scroll;
width: 256px;
min-width: 256px;
width: 248px;
min-width: 248px;
}
.list_item {
@ -122,12 +133,327 @@
margin: var(--list-item-margin-normal);
padding: var(--list-item-padding-normal);
cursor: pointer;
user-select: none;
}
.detail_pane {
.dplx_pane,
.status_pane,
.json_pane,
.trait_pane {
display:block;
background-color: var(--back-alternate2);
padding: 2px;
margin: 2px;
max-width: 33%;
min-width: 33%;
overflow: auto;
margin-top: 0px;
}
.button {
margin: 2px;
padding: 2px;
cursor: pointer;
user-select: none;
}
.tab {
font-size: 14px;
border-left-style: solid;
border-right-style: solid;
border-top-style: solid;
border-width: 1px;
margin-top: 9px;
margin-left: 2px;
margin-right: 2px;
margin-bottom: 0px;
padding: 2px;
padding-bottom: 0px;
cursor: pointer;
user-select: none;
}
#button_host_pane {
background-color: var(--back-alternate1);
}
#detail_tool_pane {
background-color: var(--back-alternate2);
}
#navigate_host_pane {
background-color: var(--back-alternate2);
overflow-y:auto;
}
#color_key_pane {
background-color: var(--back-alternate1);
border-style: solid;
border-width: 1px;
}
#list_host_pane {
background-color: var(--back-alternate2);
overflow-y:auto;
border-style: solid;
border-width: 1px;
}
#tab_host_pane {
background-color: var(--back-alternate1);
margin: 0px;
padding-bottom: 0px;
padding-left: 4px;
}
#detail_host_pane {
background-color: var(--back-alternate2);
overflow: auto;
border-style: solid;
border-width: 1px;
}
#wait_pane {
background-color: var(--back-alternate1);
margin: 0px;
padding-bottom: 0px;
padding-left: 4px;
text-align: center;
border-style: outset;
padding: 10px;
}
#message_text {
font-size: larger;
}
.status-text-error {
font-weight: bolder;
color: crimson;
}
.property_table
{
border:1px solid black;
border-collapse: collapse;
margin: 4px;
}
.property_table_header
{
padding: 3px;
}
.property_table_header_label
{
border:1px solid black;
font-size: medium;
font-weight: bolder;
color:black;
text-align: right;
padding: 3px;
padding-right: 6px;
}
.property_table_header_value
{
border:1px solid black;
font-size: large;
font-weight: bold;
color:mediumblue;
padding: 3px;
padding-left: 6px;
}
.property_table_detail
{
padding: 2px;
}
.property_table_detail_label
{
border:1px solid black;
font-size: smaller;
font-weight: bolder;
color:black;
text-align: right;
padding: 3px;
padding-right: 6px;
}
.property_table_detail_value
{
border:1px solid black;
font-size: normal;
font-weight: bolder;
color:mediumblue;
padding: 3px;
padding-left: 6px;
}
.trait_table
{
border-collapse: collapse;
border-spacing:0px;
}
.trait_table_row
{
border-spacing:0px;
}
.trait_table_row_table
{
border-collapse: collapse;
border-spacing:0px;
background-color: var(--table-back-alternate);
min-width: 700px;
}
.trait_table_row_table_row
{
border-spacing:0px;
}
.trait_table_detail_name
{
text-align: left;
font-size: medium;
font-weight: bold;
padding-left: 4px;
padding-right: 12px;
padding-top: 12px;
color: mediumblue;
}
.trait_table_detail_explanation
{
padding-top: 12px;
text-align: left;
color:forestgreen
}
.trait_parameter_table_holder
{
padding-left: 16px;
}
.trait_parameter_table
{
border-collapse: collapse;
border-spacing:0px;
}
.trait_parameter_table_header_row
{
border-spacing:0px;
}
.trait_parameter_table_header_name
{
background-color: lightgray;
font-weight:lighter;
font-size: smaller;
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
.trait_parameter_table_header_value
{
background-color: lightgray;
font-weight:lighter;
font-size: smaller;
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
.trait_parameter_table_header_type
{
background-color: lightgray;
font-weight:lighter;
font-size: smaller;
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
.trait_parameter_table_header_explanation
{
background-color: lightgray;
font-weight:lighter;
font-size: smaller;
text-align: left;
border-bottom: 1px solid black;
}
.trait_parameter_table_detail_row
{
border-spacing:0px;
}
.trait_parameter_table_detail_name
{
font-weight:bolder;
font-size: smaller;
text-align: left;
min-width: 128px;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
.trait_parameter_table_detail_value
{
font-weight:bolder;
font-size: medium;
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
color: mediumblue;
}
.trait_parameter_table_detail_type
{
text-align: left;
border-bottom: 1px solid black;
border-right: 1px solid black;
min-width: 64px;
}
.trait_parameter_table_detail_explanation
{
font-weight:lighter;
text-align: left;
font-size: small;
min-width: 180px;
border-bottom: 1px solid black;
color: forestgreen;
}
.trait_param_value_table_host
{
overflow-y:auto;
max-height: 200px;
}
.trait_param_value_table
{
border-spacing:2px;
}
.trait_param_value_table_header_row
{
border-spacing:2px;
}
.trait_param_value_table_header_detail
{
font-weight:lighter;
text-align: left;
font-size: small;
background-color:powderblue;
border-bottom: 1px solid black;
}
.trait_param_value_table_detail_row
{
border-spacing:2px;
}
.trait_param_value_table_detail_detail
{
font-weight:bolder;
font-size: small;
border-bottom: 1px solid black;
color:mediumblue ;
}

8386
docs/cdm-bundle.js Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

471
docs/cdm2dplx-bundle.js Normal file
Просмотреть файл

@ -0,0 +1,471 @@
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.cdm2dplx = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
class DataPoolImpl {
constructor() {
this.name = "ExampleDataPool";
this.culture = "en-EN";
//this.collation = "_CS"
//this.isHidden = false;
//this.isGdpr = false;
//this.pii = "Unclassified";
this.entities = new Array();
this.relationships = new Array();
}
cleanUp() {
if (this.entities.length == 0)
this.entities = undefined;
if (this.relationships.length == 0)
this.relationships = undefined;
}
}
class DPEntityImpl {
constructor() {
this.$type = "LocalEntity";
this.name = "";
this.description = "";
//this.dataCategory = "";
//this.pii = "Unclassified";
this.schemas = new Array();
this.annotations = new Array();
this.attributes = new Array();
this.partitions = new Array();
}
cleanUp() {
//if (this.pii == "Unclassified")
// this.pii = undefined;
if (this.schemas.length == 0)
this.schemas = undefined;
if (this.annotations.length == 0)
this.annotations = undefined;
if (this.attributes.length == 0)
this.attributes = undefined;
if (this.partitions.length == 0)
this.partitions = undefined;
}
}
class DPPartitionImpl {
constructor(pattern, entityName) {
this.location = entityName.replace(/(.+)/, pattern);
}
}
class DPAttributeImpl {
//pii: string;
//isHidden: boolean;
constructor() {
}
cleanUp() {
if (this.annotations.length == 0)
this.annotations = undefined;
}
}
class DPAnnotationImpl {
constructor(name, value) {
this.name = name;
this.value = value;
}
}
class DPRelationshipSideImpl {
}
class DPRelationshipImpl {
constructor() {
this.$type = "SingleKeyRelationship";
this.fromAttribute = new DPRelationshipSideImpl();
this.toAttribute = new DPRelationshipSideImpl();
}
}
class Converter {
constructor() {
this.bindingType = "none";
this.relationshipsType = "none";
this.partitionPattern = "$1.csv";
this.schemaUriBase = "";
this.schemaVersion = "";
}
getPostFix() {
return (this.schemaVersion ? "." + this.schemaVersion : "") + ".dplx";
}
convertEntities(entities, dpName) {
let dp = new DataPoolImpl();
dp.name = dpName;
let entitiesIncluded = new Set();
let relationshipsSeen = new Array();
let postFix = this.getPostFix();
for (let iEnt = 0; iEnt < entities.length; iEnt++) {
const cdmEntity = entities[iEnt];
// remember what was sent to pick out the 'good' relationships at the end
entitiesIncluded.add(cdmEntity);
let rels = cdmEntity.getResolvedEntityReferences();
if (rels)
relationshipsSeen.push(rels);
// make the entity thing
let dpEnt = new DPEntityImpl();
dpEnt.name = cdmEntity.getName();
if (this.bindingType === "byol")
dpEnt.partitions.push(new DPPartitionImpl(this.partitionPattern, dpEnt.name));
// datacategory is the same as name for cdm
//dpEnt.dataCategory = dpEnt.name;
// get the traits of the entity
let rtsEnt = cdmEntity.getResolvedTraits();
// the trait 'is.CDM.attributeGroup' contains a table of references to the 'special' attribute groups contained by the entity.
// also look for the description, pii
let isPII = false;
let isHidden = false;
rtsEnt.set.forEach(rt => {
if (rt.traitName === "is.CDM.attributeGroup") {
// get the entity held in the parameter
let pv;
let ent;
let cv;
if ((pv = rt.parameterValues.getParameterValue("groupList")) &&
(pv.value && (ent = pv.value.getObjectDef())) &&
(cv = ent.getConstantValues())) {
cv.forEach(r => {
// assume this is the right entity shape. just one attribute
let agPath = r[0];
// the attributegroup path is virtual from the root of the OM hierarchy out to the name of the attribute group.
// turn this into just the entity doc reference
let expectedEnding = `/${dpEnt.name}/hasAttributes/attributesAddedAtThisScope`;
if (agPath.endsWith(expectedEnding))
agPath = agPath.slice(0, agPath.length - expectedEnding.length);
agPath += postFix;
// caller might want some other prefix
agPath = this.schemaUriBase + agPath;
dpEnt.schemas.push(agPath);
});
}
}
if (rt.trait.isDerivedFrom("is.sensitive.PII"))
isPII = true;
if (rt.trait.isDerivedFrom("is.hidden"))
isHidden = true;
if (rt.traitName === "is.localized.describedAs") {
let localizedTableRef = rt.parameterValues.getParameterValue("localizedDisplayText").value;
if (localizedTableRef)
dpEnt.description = localizedTableRef.getObjectDef().lookupWhere("displayText", "languageTag", "en");
}
// turn each trait into an annotation too
//this.traitToAnnotation(rt, dpEnt.annotations);
});
// if (isPII)
// dpEnt.pii = "CustomerContent";
// if (isHidden)
// dpEnt.isHidden = true;
// get all attributes of the entity
let ras = cdmEntity.getResolvedAttributes();
ras.set.forEach(ra => {
let dpAtt = new DPAttributeImpl();
dpAtt.name = ra.resolvedName;
let descTrait;
if (descTrait = ra.resolvedTraits.find("is.localized.describedAs")) {
let localizedTableRef = descTrait.parameterValues.getParameterValue("localizedDisplayText").value;
if (localizedTableRef)
dpAtt.description = localizedTableRef.getObjectDef().lookupWhere("displayText", "languageTag", "en");
}
// if (ra.resolvedTraits.find("is.sensitive.PII"))
// dpAtt.pii = "CustomerContent";
// if (ra.resolvedTraits.find("is.hidden"))
// dpAtt.isHidden = true;
let mapTrait;
if (mapTrait = ra.resolvedTraits.find("is.CDS.sourceNamed"))
dpAtt.sourceColumnName = mapTrait.parameterValues.getParameterValue("name").valueString;
dpAtt.dataType = this.traits2DataType(ra.resolvedTraits);
dpAtt.dataCategory = this.traits2DataCategory(ra.resolvedTraits);
// turn each trait into an annotation too
dpAtt.annotations = new Array();
let rtsAtt = ra.resolvedTraits;
rtsAtt.set.forEach(rt => {
//this.traitToAnnotation(rt, dpAtt.annotations);
});
dpAtt.cleanUp();
dpEnt.attributes.push(dpAtt);
});
dpEnt.cleanUp();
dp.entities.push(dpEnt);
}
// now pick out all of the relationships that matter for the selected entities
if (this.relationshipsType != "none") {
relationshipsSeen.forEach(entRels => {
entRels.set.forEach(resEntRef => {
let referencingEntity = resEntRef.referencing.entity;
let referencingAttribute = resEntRef.referencing.getFirstAttribute(); // assumes single column keys
resEntRef.referenced.forEach(resEntRefSideReferenced => {
let referencedEntity = resEntRefSideReferenced.entity;
let referencedAttribute = resEntRefSideReferenced.getFirstAttribute(); // assumes single column keys
if (referencedEntity && referencedAttribute &&
((this.relationshipsType == "inclusive" && entitiesIncluded.has(referencingEntity) && entitiesIncluded.has(referencedEntity)) ||
(this.relationshipsType == "all"))) {
let dpRel = new DPRelationshipImpl();
dpRel.fromAttribute.entityName = referencingEntity.getName();
dpRel.fromAttribute.attributeName = referencingAttribute.resolvedName;
dpRel.toAttribute.entityName = referencedEntity.getName();
dpRel.toAttribute.attributeName = referencedAttribute.resolvedName;
dp.relationships.push(dpRel);
}
});
});
});
}
dp.cleanUp();
return dp;
}
traits2DataType(rts) {
let baseType = "unclassified";
let l = rts.set.length;
for (let i = 0; i < l; i++) {
const raName = rts.set[i].traitName;
switch (raName) {
case "is.dataFormat.integer":
baseType = "int64";
break;
case "is.dataFormat.floatingPoint":
baseType = "double";
break;
case "is.dataFormat.byte":
case "is.dataFormat.character":
baseType = "string";
break;
case "is.dataFormat.time":
case "is.dataFormat.date":
baseType = "dateTime";
break;
case "is.dataFormat.boolean":
baseType = "boolean";
break;
case "is.dataFormat.numeric.shaped":
baseType = "decimal";
break;
default:
break;
}
}
return baseType;
}
traits2DataCategory(rts) {
let baseType = "Uncategorized";
let fiscal = false;
let calendar = false;
let l = rts.set.length;
for (let i = 0; i < l; i++) {
const raName = rts.set[i].traitName;
switch (raName) {
case "means.calendar.fiscal":
fiscal = true;
break;
case "means.calendar.dayOfWeek":
calendar = true;
baseType = "DayOfWeek";
break;
case "means.calendar.dayOfMonth":
calendar = true;
baseType = "DayOfMonth";
break;
case "means.calendar.dayOfYear":
calendar = true;
baseType = "DayOfYear";
break;
case "means.calendar.weekOfMonth":
calendar = true;
baseType = "WeekOfMonth";
break;
case "means.calendar.weekOfYear":
calendar = true;
baseType = "WeekOfYear";
break;
case "means.calendar.month":
calendar = true;
baseType = "Month";
break;
case "means.calendar.monthOfYear":
calendar = true;
baseType = "MonthOfYear";
break;
case "means.calendar.quarter":
calendar = true;
baseType = "Quarter";
break;
case "means.calendar.week":
calendar = true;
baseType = "Week";
break;
case "means.calendar.year":
calendar = true;
baseType = "Year";
break;
case "means.idea.account":
baseType = "Account";
break;
case "means.idea.channel":
baseType = "Channel";
break;
case "means.idea.customer":
baseType = "Customer";
break;
case "means.idea.person":
case "means.idea.person.contact":
case "means.idea.person.employee":
case "means.idea.person.representative":
baseType = "Person";
break;
case "means.idea.organization":
baseType = "Organization";
break;
case "means.idea.organization.unit":
baseType = "Organization.Unit";
break;
case "means.idea.product":
baseType = "Product";
break;
case "means.location.address":
baseType = "Location.Address";
break;
case "means.location.address.street":
baseType = "Location.Address.Street";
break;
case "means.location.city":
baseType = "Location.City";
break;
case "means.location.continent":
baseType = "Location.Continent";
break;
case "means.location.country":
baseType = "Location.Country";
break;
case "means.location.county":
baseType = "Location.County";
break;
case "means.location.latitude":
baseType = "Location.Latitude";
break;
case "means.location.longitude":
baseType = "Location.Longitude";
break;
case "means.location.point":
baseType = "Location.Point";
break;
case "means.location.postalCode":
baseType = "Location.PostalCode";
break;
case "means.location.province":
baseType = "Location.Province";
break;
case "means.location.region":
baseType = "Location.Region";
break;
case "means.location.stateOrProvince":
baseType = "Location.State";
break;
case "means.location.timezone":
baseType = "Location.Timezone";
break;
case "means.measurement.version":
baseType = "Measurement.Version";
break;
case "means.measurement.date.creation":
baseType = "Measurement.Date.Creation";
break;
case "means.measurement.date.modify":
baseType = "Measurement.Date.Modify";
break;
case "means.content.binary.image":
case "means.content.binary.image.BMP":
case "means.content.binary.image.GIF":
case "means.content.binary.image.JPG":
case "means.content.binary.image.PNG":
case "means.content.binary.image.TIFF":
baseType = "Image";
break;
case "means.identity.barCode":
baseType = "BarCode";
break;
case "means.identity.brand":
baseType = "Brand";
break;
case "means.identity.governmentID":
baseType = "Identity.GovernmentID";
break;
case "means.identity.person.firstName":
baseType = "Person.FirstName";
break;
case "means.identity.person.fullName":
baseType = "Person.FullName";
break;
case "means.identity.person.lastName":
baseType = "Person.LastName";
break;
case "means.identity.person.middleName":
baseType = "Person.MiddleName";
break;
case "means.identity.service.email":
baseType = "Identity.Service.Email";
break;
case "means.identity.service.facebook":
baseType = "Identity.Service.Facebook";
break;
case "means.identity.service.phone":
case "means.identity.service.phone.cell":
case "means.identity.service.phone.fax":
baseType = "Identity.Service.Phone";
break;
case "means.identity.service.twitter":
baseType = "Identity.Service.Twitter";
break;
case "means.reference.description":
baseType = "Reference.Description";
break;
case "means.reference.phonetic":
baseType = "Reference.Phonetic";
break;
case "means.reference.URL":
baseType = "Reference.URL";
break;
case "means.reference.URL.image":
baseType = "Reference.ImageURL";
break;
default:
break;
}
if (calendar) {
if (fiscal) {
baseType = "Calendar.Fiscal." + baseType;
}
else {
if (baseType == "DayOfMonth" || baseType == "DayOfWeek" || baseType == "DayOfYear")
baseType = "Calendar." + baseType;
else
baseType = "Calendar.Date";
}
}
}
return baseType;
}
traitToAnnotation(rt, annotations) {
// skip the ugly traits
if (!rt.trait.ugly) {
let annotationName = "trait." + rt.traitName;
let annotation;
// if there are non-null parameters for the trait, they each turn into annotations
let pv = rt.parameterValues;
if (pv && pv.length) {
for (let i = 0; i < pv.length; i++) {
let paramName = pv.getParameter(i).getName();
let paramValue = pv.getValueString(i);
if (paramValue) {
annotation = new DPAnnotationImpl(annotationName + "." + paramName, paramValue);
annotations.push(annotation);
}
}
}
if (!annotation) {
annotation = new DPAnnotationImpl(annotationName, "true");
annotations.push(annotation);
}
}
}
}
exports.Converter = Converter;
},{}]},{},[1])(1)
});

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

128
docs/simpledrag.js Normal file
Просмотреть файл

@ -0,0 +1,128 @@
(function () {
/**
* THIS OBJECT WILL ONLY WORK IF your target is positioned relative or absolute,
* or anything that works with the top and left css properties (not static).
*
* Howto
* ============
*
* document.getElementById('my_target').sdrag();
*
* onDrag, onStop
* -------------------
* document.getElementById('my_target').sdrag(onDrag, null);
* document.getElementById('my_target').sdrag(null, onStop);
* document.getElementById('my_target').sdrag(onDrag, onStop);
*
* Both onDrag and onStop callback take the following arguments:
*
* - el, the currentTarget element (#my_target in the above examples)
* - pageX: the mouse event's pageX property (horizontal position of the mouse compared to the viewport)
* - startX: the distance from the element's left property to the horizontal mouse position in the viewport.
* Usually, you don't need to use that property; it is internally used to fix the undesirable
* offset that naturally occurs when you don't drag the element by its top left corner
* (for instance if you drag the element from its center).
* - pageY: the mouse event's pageX property (horizontal position of the mouse compared to the viewport)
* - startY: same as startX, but for the vertical axis (and element's top property)
*
*
*
* The onDrag callback accepts an extra argument: fix.
*
* fix is an array used to fix the coordinates applied to the target.
*
* It can be used to constrain the movement of the target inside of a virtual rectangle area for instance.
* Put a variable in the fix array to override it.
* The possible keys are:
*
* - pageX
* - startX
* - pageY
* - startY
* - skipX
* - skipY
*
* skipX and skipY let you skip the updating of the target's left property.
* This might be required in some cases where the positioning of the target
* is automatically done by the means of other css properties.
*
*
*
*
*
*
* Direction
* -------------
* With direction, you can constrain the drag to one direction only: horizontal or vertical.
* Accepted values are:
*
* - <undefined> (the default)
* - vertical
* - horizontal
*
*
*
*
*/
// simple drag
function sdrag(onDrag, onStop, direction) {
var startX = 0;
var startY = 0;
var el = this;
var dragging = false;
function move(e) {
var fix = {};
onDrag && onDrag(el, e.pageX, startX, e.pageY, startY, fix);
if ('vertical' !== direction) {
var pageX = ('pageX' in fix) ? fix.pageX : e.pageX;
if ('startX' in fix) {
startX = fix.startX;
}
if (false === ('skipX' in fix)) {
el.style.left = (pageX - startX) + 'px';
}
}
if ('horizontal' !== direction) {
var pageY = ('pageY' in fix) ? fix.pageY : e.pageY;
if ('startY' in fix) {
startY = fix.startY;
}
if (false === ('skipY' in fix)) {
el.style.top = (pageY - startY) + 'px';
}
}
}
function startDragging(e) {
if (e.currentTarget instanceof HTMLElement || e.currentTarget instanceof SVGElement) {
dragging = true;
var left = el.style.left ? parseInt(el.style.left) : 0;
var top = el.style.top ? parseInt(el.style.top) : 0;
startX = e.pageX - left;
startY = e.pageY - top;
window.addEventListener('mousemove', move);
}
else {
throw new Error("Your target must be an html element");
}
}
this.addEventListener('mousedown', startDragging);
window.addEventListener('mouseup', function (e) {
if (true === dragging) {
dragging = false;
window.removeEventListener('mousemove', move);
onStop && onStop(el, e.pageX, startX, e.pageY, startY);
}
});
}
Element.prototype.sdrag = sdrag;
})();

1100
docs/viz-controller.js Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,127 +1,201 @@
## /core/
## core/
>Note: Entities with multiple rows in the index below indicate that there is a base version of the entity (first occurrence), as well as extended versions with additional attributes added (e.g.with Sales / Services / Marketing specific additions)
| Entity Name | Location: | Description | External Link |
|:--- |:--- |:--- |:--- |
|[**Account**](/schemaDocuments/core/applicationCommon/Account.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Business that represents a customer or potential customer. The company that is billed in business transactions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Account)|
|[**Account**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Account.cdm.json)|[crmCommon](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Business that represents a customer or potential customer. The company that is billed in business transactions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Account)|
|[**ActivityPointer**](/schemaDocuments/core/applicationCommon/ActivityPointer.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Task performed, or to be performed, by a user. An activity is any action for which an entry can be made on a calendar.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ActivityPointer)|
|[**ActivityPointer**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ActivityPointer.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Task performed, or to be performed, by a user. An activity is any action for which an entry can be made on a calendar.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ActivityPointer)|
|[**Annotation**](/schemaDocuments/core/applicationCommon/Annotation.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Note that is attached to one or more objects, including other notes.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Annotation)|
|[**Appointment**](/schemaDocuments/core/applicationCommon/Appointment.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Commitment representing a time interval with start/end times and duration.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Appointment)|
|[**Appointment**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Appointment.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Commitment representing a time interval with start/end times and duration.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Appointment)|
|[**Attachment**](/schemaDocuments/core/applicationCommon/Attachment.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Attachment for an email activity.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Attachment)|
|[**BookableResource**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/BookableResource.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Resource that has capacity which can be allocated to work.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BookableResource)|
|[**BookableResourceBooking**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/BookableResourceBooking.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Represents the line details of a resource booking.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BookableResourceBooking)|
|[**BookableResourceBookingHeader**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/BookableResourceBookingHeader.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Reservation entity representing the summary of the associated resource bookings.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BookableResourceBookingHeader)|
|[**BookableResourceCategory**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/BookableResourceCategory.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Categorize resources that have capacity into categories such as roles.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BookableResourceCategory)|
|[**BookableResourceCategoryAssn**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/BookableResourceCategoryAssn.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Association entity to model the categorization of resources.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BookableResourceCategoryAssn)|
|[**BookableResourceCharacteristic**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/BookableResourceCharacteristic.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Associates resources with their characteristics and specifies the proficiency level of a resource for that characteristic.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BookableResourceCharacteristic)|
|[**BookableResourceGroup**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/BookableResourceGroup.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Associates resources with resource groups that they are a member of.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BookableResourceGroup)|
|[**BookingStatus**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/BookingStatus.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Allows creation of multiple sub statuses mapped to a booking status option.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BookingStatus)|
|[**BulkOperation**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/BulkOperation.cdm.json)|[marketing](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/)|System operation used to perform lengthy and asynchronous operations on large data sets, such as distributing a campaign activity or quick campaign.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BulkOperation)|
|[**BulkOperationLog**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/BulkOperationLog.cdm.json)|[marketing](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/)|Log used to track bulk operation execution, successes, and failures.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BulkOperationLog)|
|[**BusinessUnit**](/schemaDocuments/core/applicationCommon/BusinessUnit.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Business, division, or department in the Microsoft Dynamics 365 database.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/BusinessUnit)|
|[**Campaign**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/Campaign.cdm.json)|[marketing](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/)|Container for campaign activities and responses, sales literature, products, and lists to create, plan, execute, and track the results of a specific marketing campaign through its life.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Campaign)|
|[**Campaign**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Campaign.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Container for campaign activities and responses, sales literature, products, and lists to create, plan, execute, and track the results of a specific marketing campaign through its life.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Campaign)|
|[**CampaignActivity**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/CampaignActivity.cdm.json)|[marketing](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/)|Task performed, or to be performed, by a user for planning or running a campaign.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/CampaignActivity)|
|[**CampaignActivityItem**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/CampaignActivityItem.cdm.json)|[marketing](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/)|Work item of a campaign activity, such as a list or sales literature.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/CampaignActivityItem)|
|[**CampaignItem**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/CampaignItem.cdm.json)|[marketing](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/)|Work item in a campaign, a list or sales literature.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/CampaignItem)|
|[**CampaignItem**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/CampaignItem.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Work item in a campaign, a list or sales literature.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/CampaignItem)|
|[**CampaignResponse**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/CampaignResponse.cdm.json)|[marketing](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/)|Response from an existing or a potential new customer for a campaign.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/CampaignResponse)|
|[**Characteristic**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/Characteristic.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Skills, education and certifications of resources.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Characteristic)|
|[**Competitor**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Competitor.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Business competing for the sale represented by a lead or opportunity.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Competitor)|
|[**CompetitorAddress**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/CompetitorAddress.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Additional addresses for a competitor. The first two addresses are stored in the competitor object.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/CompetitorAddress)|
|[**Connection**](/schemaDocuments/core/applicationCommon/Connection.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Relationship between two entities.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Connection)|
|[**Connection**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Connection.cdm.json)|[crmCommon](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Relationship between two entities.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Connection)|
|[**ConnectionRole**](/schemaDocuments/core/applicationCommon/ConnectionRole.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Role describing a relationship between a two records.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ConnectionRole)|
|[**Contact**](/schemaDocuments/core/applicationCommon/Contact.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Person with whom a business unit has a relationship, such as customer, supplier, and colleague.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Contact)|
|[**Contact**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Contact.cdm.json)|[crmCommon](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Person with whom a business unit has a relationship, such as customer, supplier, and colleague.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Contact)|
|[**Contract**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Contract.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Agreement to provide customer service during a specified amount of time or number of cases.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Contract)|
|[**ContractDetail**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ContractDetail.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Line item in a contract that specifies the type of service a customer is entitled to.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ContractDetail)|
|[**Customer**](/schemaDocuments/core/applicationCommon/Customer.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Person or Account with whom a business unit has a relationship, such as customer, supplier, and colleague.||
|[**CustomerAddress**](/schemaDocuments/core/applicationCommon/CustomerAddress.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Address and shipping information. Used to store additional addresses for an account or contact.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/CustomerAddress)|
|[**CustomerOpportunityRole**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/CustomerOpportunityRole.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Relationship between an account or contact and an opportunity.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/CustomerOpportunityRole)|
|[**CustomerRelationship**](/schemaDocuments/core/applicationCommon/CustomerRelationship.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Relationship between a customer and a partner in which either can be an account or contact.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/CustomerRelationship)|
|[**Discount**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Discount.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Price reduction made from the list price of a product or service based on the quantity purchased.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Discount)|
|[**DiscountType**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/DiscountType.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Type of discount specified as either a percentage or an amount.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/DiscountType)|
|[**Email**](/schemaDocuments/core/applicationCommon/Email.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Activity that is delivered using email protocols.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Email)|
|[**Email**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Email.cdm.json)|[crmCommon](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Activity that is delivered using email protocols.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Email)|
|[**EmailSignature**](/schemaDocuments/core/applicationCommon/EmailSignature.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Signature for email message|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/EmailSignature)|
|[**Entitlement**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Entitlement.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Defines the amount and type of support a customer should receive.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Entitlement)|
|[**Equipment**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Equipment.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Resource that can be scheduled.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Equipment)|
|[**Fax**](/schemaDocuments/core/applicationCommon/Fax.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Activity that tracks call outcome and number of pages for a fax and optionally stores an electronic copy of the document.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Fax)|
|[**Fax**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Fax.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Activity that tracks call outcome and number of pages for a fax and optionally stores an electronic copy of the document.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Fax)|
|[**Feedback**](/schemaDocuments/core/applicationCommon/Feedback.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Container for feedback and ratings for knowledge articles.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Feedback)|
|[**Goal**](/schemaDocuments/core/applicationCommon/Goal.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Target objective for a user or a team for a specified time period.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Goal)|
|[**Incident**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Incident.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Service request case associated with a contract.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Incident)|
|[**IncidentResolution**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/IncidentResolution.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Special type of activity that includes description of the resolution, billing status, and the duration of the case.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/IncidentResolution)|
|[**Invoice**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Invoice.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Order that has been billed.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Invoice)|
|[**InvoiceDetail**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/InvoiceDetail.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Line item in an invoice containing detailed billing information for a product.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/InvoiceDetail)|
|[**KbArticle**](/schemaDocuments/core/applicationCommon/KbArticle.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Structured content that is part of the knowledge base.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/KbArticle)|
|[**KbArticleComment**](/schemaDocuments/core/applicationCommon/KbArticleComment.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Comment on a knowledge base article.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/KbArticleComment)|
|[**KbArticleTemplate**](/schemaDocuments/core/applicationCommon/KbArticleTemplate.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Template for a knowledge base article that contains the standard attributes of an article.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/KbArticleTemplate)|
|[**KnowledgeArticle**](/schemaDocuments/core/applicationCommon/KnowledgeArticle.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Organizational knowledge for internal and external use.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/KnowledgeArticle)|
|[**KnowledgeArticle**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/KnowledgeArticle.cdm.json)|[productManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/)|Organizational knowledge for internal and external use.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/KnowledgeArticle)|
|[**KnowledgeArticleIncident**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/KnowledgeArticleIncident.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Association between an knowledge article and incident.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/KnowledgeArticleIncident)|
|[**KnowledgeBaseRecord**](/schemaDocuments/core/applicationCommon/KnowledgeBaseRecord.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Metadata of knowledge base (KB) articles associated with Microsoft Dynamics 365 entities.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/KnowledgeBaseRecord)|
|[**Lead**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Lead.cdm.json)|[crmCommon](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Prospect or potential sales opportunity. Leads are converted into accounts, contacts, or opportunities when they are qualified. Otherwise, they are deleted or archived.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Lead)|
|[**Lead**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/leadManagement/Lead.cdm.json)|[leadManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/leadManagement/)|Prospect or potential sales opportunity. Leads are converted into accounts, contacts, or opportunities when they are qualified. Otherwise, they are deleted or archived.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Lead)|
|[**LeadAddress**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/leadManagement/LeadAddress.cdm.json)|[leadManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/leadManagement/)|Address information for a lead.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/LeadAddress)|
|[**Letter**](/schemaDocuments/core/applicationCommon/Letter.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Activity that tracks the delivery of a letter. The activity can contain the electronic copy of the letter.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Letter)|
|[**Letter**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Letter.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Activity that tracks the delivery of a letter. The activity can contain the electronic copy of the letter.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Letter)|
|[**List**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/List.cdm.json)|[marketing](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/)|Group of existing or potential customers created for a marketing campaign or other sales purposes.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/List)|
|[**ListMember**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/ListMember.cdm.json)|[marketing](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/marketing/)|Item in a marketing list.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ListMember)|
|[**ListMember**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/ListMember.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Item in a marketing list.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ListMember)|
|[**Metric**](/schemaDocuments/core/applicationCommon/Metric.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Type of measurement for a goal, such as money amount or count.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Metric)|
|[**Opportunity**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Opportunity.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Potential revenue-generating event, or sale to an account, which needs to be tracked through a sales process to completion.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Opportunity)|
|[**OpportunityClose**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/OpportunityClose.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Activity that is created automatically when an opportunity is closed, containing information such as the description of the closing and actual revenue.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/OpportunityClose)|
|[**OpportunityProduct**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/OpportunityProduct.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Association between an opportunity and a product.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/OpportunityProduct)|
|[**OrderClose**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/OrderClose.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Activity generated automatically when an order is closed.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/OrderClose)|
|[**Organization**](/schemaDocuments/core/applicationCommon/Organization.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Top level of the Microsoft Dynamics 365 business hierarchy. The organization can be a specific business, holding company, or corporation.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Organization)|
|[**PhoneCall**](/schemaDocuments/core/applicationCommon/PhoneCall.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Activity to track a telephone call.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/PhoneCall)|
|[**PhoneCall**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/PhoneCall.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Activity to track a telephone call.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/PhoneCall)|
|[**Position**](/schemaDocuments/core/applicationCommon/Position.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Position of a user in the hierarchy|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Position)|
|[**PriceLevel**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/PriceLevel.cdm.json)|[productManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/)|Entity that defines pricing levels.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/PriceLevel)|
|[**Product**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/Product.cdm.json)|[productManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/)|Information about products and their pricing information.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Product)|
|[**ProductAssociation**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/ProductAssociation.cdm.json)|[productManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/)|Instance of a product added to a bundle or kit.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ProductAssociation)|
|[**ProductPriceLevel**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/ProductPriceLevel.cdm.json)|[productManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/)|Information about how to price a product in the specified price level, including pricing method, rounding option, and discount type based on a specified product unit.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ProductPriceLevel)|
|[**ProductPriceLevel**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/ProductPriceLevel.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Information about how to price a product in the specified price level, including pricing method, rounding option, and discount type based on a specified product unit.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ProductPriceLevel)|
|[**ProductSubstitute**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/ProductSubstitute.cdm.json)|[productManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/)|Information about the selling relationship between two products, including the relationship type, such as up-sell, cross-sell, substitute, or accessory.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ProductSubstitute)|
|[**Queue**](/schemaDocuments/core/applicationCommon/Queue.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|A list of records that require action, such as accounts, activities, and cases.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Queue)|
|[**Queue**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Queue.cdm.json)|[crmCommon](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|A list of records that require action, such as accounts, activities, and cases.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Queue)|
|[**QueueItem**](/schemaDocuments/core/applicationCommon/QueueItem.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|A specific item in a queue, such as a case record or an activity record.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/QueueItem)|
|[**Quote**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Quote.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Formal offer for products and/or services, proposed at specific prices and related payment terms, which is sent to a prospective customer.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Quote)|
|[**QuoteClose**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/QuoteClose.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Activity generated when a quote is closed.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/QuoteClose)|
|[**QuoteDetail**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/QuoteDetail.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Product line item in a quote. The details include such information as product ID, description, quantity, and cost.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/QuoteDetail)|
|[**RatingModel**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/RatingModel.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|Represents a model to evaluate skills or other related entities.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/RatingModel)|
|[**RatingValue**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/RatingValue.cdm.json)|[scheduling](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/msSolutions/scheduling/)|A unique value associated with a rating model that allows providing a user friendly rating value.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/RatingValue)|
|[**RecurringAppointmentMaster**](/schemaDocuments/core/applicationCommon/RecurringAppointmentMaster.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|The Master appointment of a recurring appointment series.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/RecurringAppointmentMaster)|
|[**RecurringAppointmentMaster**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/RecurringAppointmentMaster.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|The Master appointment of a recurring appointment series.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/RecurringAppointmentMaster)|
|[**Resource**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Resource.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|User or facility/equipment that can be scheduled for a service.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Resource)|
|[**ResourceGroup**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ResourceGroup.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Resource group or team whose members can be scheduled for a service.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ResourceGroup)|
|[**ResourceGroupExpansion**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ResourceGroupExpansion.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Resource Expansions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ResourceGroupExpansion)|
|[**SalesLiterature**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/SalesLiterature.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Storage of sales literature, which may contain one or more documents.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SalesLiterature)|
|[**SalesLiteratureItem**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/SalesLiteratureItem.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Item in the sales literature collection.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SalesLiteratureItem)|
|[**SalesOrder**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/SalesOrder.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Quote that has been accepted.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SalesOrder)|
|[**SalesOrderDetail**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/SalesOrderDetail.cdm.json)|[sales](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Line item in a sales order.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SalesOrderDetail)|
|[**Service**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Service.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Activity that represents work done to satisfy a customer's need.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Service)|
|[**ServiceAppointment**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ServiceAppointment.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Activity offered by the organization to satisfy its customer's needs. Each service activity includes date, time, duration, and required resources.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/ServiceAppointment)|
|[**Site**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Site.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Location or branch office where an organization does business. An organization can have multiple sites.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Site)|
|[**SLA**](/schemaDocuments/core/applicationCommon/SLA.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Contains information about the tracked service-level KPIs for cases that belong to different customers.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SLA)|
|[**SLAItem**](/schemaDocuments/core/applicationCommon/SLAItem.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Contains information about a tracked support KPI for a specific customer.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SLAItem)|
|[**SLAKPIInstance**](/schemaDocuments/core/applicationCommon/SLAKPIInstance.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Service level agreement (SLA) key performance indicator (KPI) instance that is tracked for an individual case|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SLAKPIInstance)|
|[**SLAKPIInstance**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/SLAKPIInstance.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Service level agreement (SLA) key performance indicator (KPI) instance that is tracked for an individual case|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SLAKPIInstance)|
|[**SocialActivity**](/schemaDocuments/core/applicationCommon/SocialActivity.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|For internal use only.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SocialActivity)|
|[**SocialActivity**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/SocialActivity.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|For internal use only.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SocialActivity)|
|[**SocialProfile**](/schemaDocuments/core/applicationCommon/SocialProfile.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|This entity is used to store social profile information of its associated account and contacts on different social channels.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SocialProfile)|
|[**SystemUser**](/schemaDocuments/core/applicationCommon/SystemUser.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Person with access to the Microsoft CRM system and who owns objects in the Microsoft CRM database.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SystemUser)|
|[**SystemUser**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/SystemUser.cdm.json)|[crmCommon](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Person with access to the Microsoft CRM system and who owns objects in the Microsoft CRM database.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/SystemUser)|
|[**Task**](/schemaDocuments/core/applicationCommon/Task.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Generic activity representing work needed to be done.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Task)|
|[**Task**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Task.cdm.json)|[service](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Generic activity representing work needed to be done.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Task)|
|[**Team**](/schemaDocuments/core/applicationCommon/Team.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Collection of system users that routinely collaborate. Teams can be used to simplify record sharing and provide team members with common access to organization data when team members belong to different Business Units.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Team)|
|[**Team**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Team.cdm.json)|[crmCommon](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Collection of system users that routinely collaborate. Teams can be used to simplify record sharing and provide team members with common access to organization data when team members belong to different Business Units.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Team)|
|[**Territory**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Territory.cdm.json)|[crmCommon](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Territory represents sales regions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/Territory)|
|[**TransactionCurrency**](/schemaDocuments/core/applicationCommon/TransactionCurrency.cdm.json)|[applicationCommon](/schemaDocuments/core/applicationCommon/)|Currency in which a financial transaction is carried out.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/TransactionCurrency)|
|[**UoM**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/UoM.cdm.json)|[productManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/)|Unit of measure.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/UoM)|
|[**UoMSchedule**](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/UoMSchedule.cdm.json)|[productManagement](/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/productManagement/)|Grouping of units.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/UoMSchedule)|
|[**Account**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Account.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Business that represents a customer or potential customer. The company that is billed in business transactions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Account)|
|[**Account**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/Account.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Business that represents a customer or potential customer. The company that is billed in business transactions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Account)|
|[**Account**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Account.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Business that represents a customer or potential customer. The company that is billed in business transactions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Account)|
|[**Account**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/Account.cdm.json)|[solutions/portals/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/)|Business that represents a customer or potential customer. The company that is billed in business transactions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Account)|
|[**Account**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Account.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|Business that represents a customer or potential customer. The company that is billed in business transactions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Account)|
|[**AccountLeads**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/AccountLeads.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|description.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/AccountLeads)|
|[**Activity**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Activity.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Task performed, or to be performed, by a user. An activity is any action for which an entry can be made on a calendar.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ActivityPointer)|
|[**Activity**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Activity.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Task performed, or to be performed, by a user. An activity is any action for which an entry can be made on a calendar.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ActivityPointer)|
|[**ActivityParty**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/ActivityParty.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Person or group associated with an activity. An activity can have multiple activity parties.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ActivityParty)|
|[**ActivityParty**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ActivityParty.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Person or group associated with an activity. An activity can have multiple activity parties.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ActivityParty)|
|[**Address**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Address.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Address and shipping information. Used to store additional addresses for an account or contact.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CustomerAddress)|
|[**Appointment**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Appointment.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Commitment representing a time interval with start/end times and duration.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Appointment)|
|[**Appointment**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Appointment.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Commitment representing a time interval with start/end times and duration.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Appointment)|
|[**Appointment**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/Appointment.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)|Commitment representing a time interval with start/end times and duration.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Appointment)|
|[**Article**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Article.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Structured content that is part of the knowledge base.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/KbArticle)|
|[**Article**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/Article.cdm.json)|[solutions/portals/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/)|Structured content that is part of the knowledge base.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/KbArticle)|
|[**ArticleComment**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/ArticleComment.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Comment on a knowledge base article.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/KbArticleComment)|
|[**ArticleTemplate**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/ArticleTemplate.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Template for a knowledge base article that contains the standard attributes of an article.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/KbArticleTemplate)|
|[**AttendeePass**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/AttendeePass.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_AttendeePass)|
|[**BookableResource**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/BookableResource.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Resource that has capacity which can be allocated to work.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BookableResource)|
|[**BookableResourceBooking**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/BookableResourceBooking.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Represents the line details of a resource booking.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BookableResourceBooking)|
|[**BookableResourceBookingHeader**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/BookableResourceBookingHeader.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Reservation entity representing the summary of the associated resource bookings.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BookableResourceBookingHeader)|
|[**BookableResourceCategory**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/BookableResourceCategory.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Categorize resources that have capacity into categories such as roles.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BookableResourceCategory)|
|[**BookableResourceCategoryAssn**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/BookableResourceCategoryAssn.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Association entity to model the categorization of resources.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BookableResourceCategoryAssn)|
|[**BookableResourceCharacteristic**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/BookableResourceCharacteristic.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Associates resources with their characteristics and specifies the proficiency level of a resource for that characteristic.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BookableResourceCharacteristic)|
|[**BookableResourceGroup**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/BookableResourceGroup.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Associates resources with resource groups that they are a member of.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BookableResourceGroup)|
|[**BookingStatus**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/BookingStatus.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Allows creation of multiple sub statuses mapped to a booking status option.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BookingStatus)|
|[**Building**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Building.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|A single venue can be comprised of zero or more buildings where event activities are held. Each building in turn is comprised of zero or more rooms where event activities are held.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_Building)|
|[**BusinessUnit**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/BusinessUnit.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Business, division, or department in the Microsoft Dynamics 365 database.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BusinessUnit)|
|[**Campaign**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Campaign.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Container for campaign activities and responses, sales literature, products, and lists to create, plan, execute, and track the results of a specific marketing campaign through its life.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Campaign)|
|[**CampaignActivity**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/CampaignActivity.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Task performed, or to be performed, by a user for planning or running a campaign.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CampaignActivity)|
|[**CampaignActivityItem**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/CampaignActivityItem.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Work item of a campaign activity, such as a list or sales literature.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CampaignActivityItem)|
|[**CampaignItem**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/CampaignItem.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Work item in a campaign, a list or sales literature.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CampaignItem)|
|[**CampaignResponse**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/CampaignResponse.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Response from an existing or a potential new customer for a campaign.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CampaignResponse)|
|[**Case**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Case.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Service request case associated with a contract.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Incident)|
|[**Case**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/Case.cdm.json)|[solutions/portals/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/)|Service request case associated with a contract.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Incident)|
|[**CaseResolution**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/CaseResolution.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Special type of activity that includes description of the resolution, billing status, and the duration of the case.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/IncidentResolution)|
|[**Characteristic**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/Characteristic.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Skills, education and certifications of resources.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Characteristic)|
|[**CheckIn**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/CheckIn.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_CheckIn)|
|[**ChildIncidentCount**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ChildIncidentCount.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|For internal use only.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ChildIncidentCount)|
|[**Competitor**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Competitor.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Business competing for the sale represented by a lead or opportunity.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Competitor)|
|[**CompetitorAddress**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/CompetitorAddress.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Additional addresses for a competitor. The first two addresses are stored in the competitor object.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CompetitorAddress)|
|[**CompetitorProduct**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/CompetitorProduct.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Association between a competitor and a product offered by the competitor.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CompetitorProduct)|
|[**CompetitorSalesLiterature**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/CompetitorSalesLiterature.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CompetitorSalesLiterature)|
|[**Connection**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Connection.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Relationship between two entities.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Connection)|
|[**Connection**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/Connection.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)|Relationship between two entities.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Connection)|
|[**ConnectionRole**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/ConnectionRole.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Role describing a relationship between a two records.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ConnectionRole)|
|[**Contact**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Contact.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Person with whom a business unit has a relationship, such as customer, supplier, and colleague.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Contact)|
|[**Contact**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/Contact.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Person with whom a business unit has a relationship, such as customer, supplier, and colleague.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Contact)|
|[**Contact**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Contact.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Person with whom a business unit has a relationship, such as customer, supplier, and colleague.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Contact)|
|[**Contact**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/Contact.cdm.json)|[solutions/portals/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/)|Person with whom a business unit has a relationship, such as customer, supplier, and colleague.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Contact)|
|[**Contact**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/Contact.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)|Person with whom a business unit has a relationship, such as customer, supplier, and colleague.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Contact)|
|[**ContactInvoices**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/ContactInvoices.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ContactInvoices)|
|[**ContactLeads**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/ContactLeads.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ContactLeads)|
|[**ContactOrders**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/ContactOrders.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ContactOrders)|
|[**ContactQuotes**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/ContactQuotes.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ContactQuotes)|
|[**ContentSettings**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/ContentSettings.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_contentsettings)|
|[**Contract**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Contract.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Agreement to provide customer service during a specified amount of time or number of cases.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Contract)|
|[**ContractLine**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ContractLine.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Line item in a contract that specifies the type of service a customer is entitled to.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ContractDetail)|
|[**Currency**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Currency.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Currency in which a financial transaction is carried out.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/TransactionCurrency)|
|[**CustomRegistrationField**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/CustomRegistrationField.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_customregistrationfield)|
|[**CustomerJourney**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/CustomerJourney.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_customerjourney)|
|[**CustomerRelationship**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/CustomerRelationship.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Relationship between a customer and a partner in which either can be an account or contact.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CustomerRelationship)|
|[**Discount**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Discount.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Price reduction made from the list price of a product or service based on the quantity purchased.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Discount)|
|[**DiscountList**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/DiscountList.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Type of discount specified as either a percentage or an amount.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/DiscountType)|
|[**Email**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Email.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Activity that is delivered using email protocols.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Email)|
|[**Email**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Email.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Activity that is delivered using email protocols.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Email)|
|[**EmailSignature**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/EmailSignature.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Signature for email message|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/EmailSignature)|
|[**Entitlement**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Entitlement.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Defines the amount and type of support a customer should receive.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Entitlement)|
|[**EntitlementContact**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/EntitlementContact.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/EntitlementContacts)|
|[**EntitlementProduct**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/EntitlementProduct.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/EntitlementProducts)|
|[**Event**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Event.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|Container to manage and plan marketing activities that take place at a specific venue or location.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_Event)|
|[**EventCustomRegistrationField**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/EventCustomRegistrationField.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_eventcustomregistrationfield)|
|[**EventRegistration**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/EventRegistration.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_EventRegistration)|
|[**EventTeamMember**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/EventTeamMember.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_EventTeamMember)|
|[**EventVendor**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/EventVendor.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_eventvendor)|
|[**FacilityEquipment**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/FacilityEquipment.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Resource that can be scheduled.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Equipment)|
|[**Fax**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Fax.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Activity that tracks call outcome and number of pages for a fax and optionally stores an electronic copy of the document.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Fax)|
|[**Fax**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Fax.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Activity that tracks call outcome and number of pages for a fax and optionally stores an electronic copy of the document.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Fax)|
|[**Feedback**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Feedback.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Container for feedback and ratings for knowledge articles.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Feedback)|
|[**Feedback**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/Feedback.cdm.json)|[solutions/portals/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/)|Container for feedback and ratings for knowledge articles.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Feedback)|
|[**FormPage**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/FormPage.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_formpage)|
|[**GeoPin**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/GeoPin.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_geopin)|
|[**Goal**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Goal.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Target objective for a user or a team for a specified time period.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Goal)|
|[**GoalMetric**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/GoalMetric.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Type of measurement for a goal, such as money amount or count.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Metric)|
|[**Hotel**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Hotel.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|This represents a single hotel property (for e.g, Marriott in Bellevue). Each individual property belongs to a Hotel Group (e.g., Marriott) which is represented by an Account|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_Hotel)|
|[**HotelRoomAllocation**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/HotelRoomAllocation.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|This entity records the number of rooms that are allocated from a single hotel for guests of a single event.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_HotelRoomAllocation)|
|[**HotelRoomReservation**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/HotelRoomReservation.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|Each record of this type tracks a single request made by an event attendee (through the registration portal) to reserve a hotel room from the available hotel allocations|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_HotelRoomReservation)|
|[**IncidentKnowledgeBaseRecord**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/IncidentKnowledgeBaseRecord.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/IncidentKnowledgeBaseRecord)|
|[**Invoice**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Invoice.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Order that has been billed.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Invoice)|
|[**InvoiceProduct**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/InvoiceProduct.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Line item in an invoice containing detailed billing information for a product.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/InvoiceDetail)|
|[**KnowledgeArticle**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/KnowledgeArticle.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Organizational knowledge for internal and external use.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/KnowledgeArticle)|
|[**KnowledgeArticle**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/KnowledgeArticle.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Organizational knowledge for internal and external use.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/KnowledgeArticle)|
|[**KnowledgeArticleCategory**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/KnowledgeArticleCategory.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Category for a Knowledge Article.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/KnowledgeArticlesCategories)|
|[**KnowledgeArticleIncident**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/KnowledgeArticleIncident.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Association between an knowledge article and incident.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/KnowledgeArticleIncident)|
|[**KnowledgeBaseRecord**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/KnowledgeBaseRecord.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Metadata of knowledge base (KB) articles associated with Microsoft Dynamics 365 entities.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/KnowledgeBaseRecord)|
|[**Layout**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Layout.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|The layout entity is to provide users a quick way to specify the various different layouts that a single room can be arranged in and the maximum capacity of the room as a result of the change.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_Layout)|
|[**Lead**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Lead.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Prospect or potential sales opportunity. Leads are converted into accounts, contacts, or opportunities when they are qualified. Otherwise, they are deleted or archived.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Lead)|
|[**Lead**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/Lead.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)|Prospect or potential sales opportunity. Leads are converted into accounts, contacts, or opportunities when they are qualified. Otherwise, they are deleted or archived.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Lead)|
|[**LeadAddress**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/LeadAddress.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Address information for a lead.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/LeadAddress)|
|[**LeadCompetitors**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/LeadCompetitors.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/LeadCompetitors)|
|[**LeadProduct**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/LeadProduct.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/LeadProduct)|
|[**LeadScoringModel**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/marketingLeads/LeadScoringModel.cdm.json)|[marketing/marketingLeads/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/marketingLeads/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_leadscoremodel)|
|[**Letter**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Letter.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Activity that tracks the delivery of a letter. The activity can contain the electronic copy of the letter.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Letter)|
|[**Letter**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/Letter.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Activity that tracks the delivery of a letter. The activity can contain the electronic copy of the letter.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Letter)|
|[**LinkedInAccount**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/LinkedInAccount.cdm.json)|[marketing/LinkedInLeads/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/)|The LinkedIn account where forms are created and published.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_linkedinaccount)|
|[**LinkedInCampaign**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/LinkedInCampaign.cdm.json)|[marketing/LinkedInLeads/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/)|Campaign used to capture submissions from prospects.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_linkedincampaign)|
|[**LinkedInFormQuestion**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/LinkedInFormQuestion.cdm.json)|[marketing/LinkedInLeads/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_linkedinformquestion)|
|[**LinkedInFormSubmissionAnswer**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/LinkedInFormSubmissionAnswer.cdm.json)|[marketing/LinkedInLeads/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/)|Answers to individual questions on a form submitted by a LinkedIn member|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_linkedinformanswer)|
|[**LinkedInLeadGenForm**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/LinkedInLeadGenForm.cdm.json)|[marketing/LinkedInLeads/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/)|Form shown to prospects on LinkedIn|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_linkedinform)|
|[**LinkedInLeadGenFormSubmission**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/LinkedInLeadGenFormSubmission.cdm.json)|[marketing/LinkedInLeads/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/LinkedInLeads/)|Submissions from prospects on LinkedIn|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_linkedinformsubmission)|
|[**ListForm**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/ListForm.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_listform)|
|[**MarketingEmail**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/MarketingEmail.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_marketingemail)|
|[**MarketingForm**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/MarketingForm.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_marketingform)|
|[**MarketingList**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/MarketingList.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Group of existing or potential customers created for a marketing campaign or other sales purposes.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/List)|
|[**MarketingList**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/MarketingList.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)|Group of existing or potential customers created for a marketing campaign or other sales purposes.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/List)|
|[**MarketingListMember**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/MarketingListMember.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Item in a marketing list.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ListMember)|
|[**MarketingPage**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/MarketingPage.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_marketingpage)|
|[**Note**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Note.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Note that is attached to one or more objects, including other notes.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Annotation)|
|[**Opportunity**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Opportunity.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Potential revenue-generating event, or sale to an account, which needs to be tracked through a sales process to completion.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Opportunity)|
|[**Opportunity**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/Opportunity.cdm.json)|[solutions/portals/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/portals/)|Potential revenue-generating event, or sale to an account, which needs to be tracked through a sales process to completion.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Opportunity)|
|[**OpportunityClose**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/OpportunityClose.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Activity that is created automatically when an opportunity is closed, containing information such as the description of the closing and actual revenue.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/OpportunityClose)|
|[**OpportunityCompetitors**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/OpportunityCompetitors.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/OpportunityCompetitors)|
|[**OpportunityProduct**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/OpportunityProduct.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Association between an opportunity and a product.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/OpportunityProduct)|
|[**OpportunityRelationship**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/OpportunityRelationship.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Relationship between an account or contact and an opportunity.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/CustomerOpportunityRole)|
|[**Order**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Order.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Quote that has been accepted.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SalesOrder)|
|[**OrderClose**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/OrderClose.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Activity generated automatically when an order is closed.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/OrderClose)|
|[**OrderProduct**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/OrderProduct.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Line item in a sales order.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SalesOrderDetail)|
|[**Organization**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Organization.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Top level of the Microsoft Dynamics 365 business hierarchy. The organization can be a specific business, holding company, or corporation.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Organization)|
|[**Owner**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Owner.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Group of undeleted system users and undeleted teams. Owners can be used to control access to specific objects.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Owner)|
|[**Pass**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Pass.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|Information about passes.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_pass)|
|[**PhoneCall**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/PhoneCall.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Activity to track a telephone call.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/PhoneCall)|
|[**PhoneCall**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/PhoneCall.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|Activity to track a telephone call.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/PhoneCall)|
|[**PhoneCall**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/PhoneCall.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)|Activity to track a telephone call.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/PhoneCall)|
|[**Position**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Position.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Position of a user in the hierarchy|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Position)|
|[**PriceList**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/PriceList.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Entity that defines pricing levels.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/PriceLevel)|
|[**PriceListItem**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/PriceListItem.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Information about how to price a product in the specified price level, including pricing method, rounding option, and discount type based on a specified product unit.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ProductPriceLevel)|
|[**PriceListItem**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/PriceListItem.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Information about how to price a product in the specified price level, including pricing method, rounding option, and discount type based on a specified product unit.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ProductPriceLevel)|
|[**Product**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/Product.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Information about products and their pricing information.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Product)|
|[**ProductAssociation**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/ProductAssociation.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Instance of a product added to a bundle or kit.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ProductAssociation)|
|[**ProductRelationship**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/ProductRelationship.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Information about the selling relationship between two products, including the relationship type, such as up-sell, cross-sell, substitute, or accessory.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ProductSubstitute)|
|[**ProductSalesLiterature**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/ProductSalesLiterature.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ProductSalesLiterature)|
|[**Property**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/Property.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Information about a product property.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/DynamicProperty)|
|[**PropertyAssociation**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/PropertyAssociation.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Association of a property definition with another entity in the system.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/DynamicPropertyAssociation)|
|[**PropertyInstance**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/PropertyInstance.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Instance of a property with its value.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/DynamicPropertyInstance)|
|[**PropertyInstance**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/PropertyInstance.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Instance of a property with its value.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/DynamicPropertyInstance)|
|[**PropertyOptionSetItem**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/PropertyOptionSetItem.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Item with a name and value in a property option set type.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/DynamicPropertyOptionSetItem)|
|[**Queue**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Queue.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|A list of records that require action, such as accounts, activities, and cases.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Queue)|
|[**QueueItem**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/QueueItem.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|A specific item in a queue, such as a case record or an activity record.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/QueueItem)|
|[**QuickCampaign**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/QuickCampaign.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|System operation used to perform lengthy and asynchronous operations on large data sets, such as distributing a campaign activity or quick campaign.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/BulkOperation)|
|[**Quote**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/Quote.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Formal offer for products and/or services, proposed at specific prices and related payment terms, which is sent to a prospective customer.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Quote)|
|[**QuoteClose**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/QuoteClose.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Activity generated when a quote is closed.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/QuoteClose)|
|[**QuoteProduct**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/QuoteProduct.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Product line item in a quote. The details include such information as product ID, description, quantity, and cost.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/QuoteDetail)|
|[**RatingModel**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/RatingModel.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Represents a model to evaluate skills or other related entities.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/RatingModel)|
|[**RatingValue**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/RatingValue.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|A unique value associated with a rating model that allows providing a user friendly rating value.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/RatingValue)|
|[**RecurringAppointment**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/RecurringAppointment.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|The Master appointment of a recurring appointment series.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/RecurringAppointmentMaster)|
|[**RecurringAppointment**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/RecurringAppointment.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|The Master appointment of a recurring appointment series.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/RecurringAppointmentMaster)|
|[**RegistrationResponse**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/RegistrationResponse.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_registrationresponse)|
|[**Resource**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Resource.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|User or facility/equipment that can be scheduled for a service.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Resource)|
|[**ResourceExpansion**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ResourceExpansion.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Resource Expansions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ResourceGroupExpansion)|
|[**ResourceSpecification**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ResourceSpecification.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Selection rule that allows the scheduling engine to select a number of resources from a pool of resources. The rules can be associated with a service.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ResourceSpec)|
|[**Room**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Room.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|A room is where a session may be held. A single room can be used in multiple different layouts which has a direct impact on the max. occupancy of the room.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_Room)|
|[**SLA**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/SLA.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Contains information about the tracked service-level KPIs for cases that belong to different customers.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SLA)|
|[**SLAItem**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/SLAItem.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Contains information about a tracked support KPI for a specific customer.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SLAItem)|
|[**SLAKPIInstance**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/SLAKPIInstance.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Service level agreement (SLA) key performance indicator (KPI) instance that is tracked for an individual case|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SLAKPIInstance)|
|[**SLAKPIInstance**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/SLAKPIInstance.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Service level agreement (SLA) key performance indicator (KPI) instance that is tracked for an individual case|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SLAKPIInstance)|
|[**SalesAttachment**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/SalesAttachment.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Item in the sales literature collection.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SalesLiteratureItem)|
|[**SalesLiterature**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/SalesLiterature.cdm.json)|[crmCommon/sales/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/sales/)|Storage of sales literature, which may contain one or more documents.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SalesLiterature)|
|[**SchedulingGroup**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/SchedulingGroup.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Resource group or team whose members can be scheduled for a service.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ResourceGroup)|
|[**Segment**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/Segment.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_segment)|
|[**Service**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Service.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Activity that represents work done to satisfy a customer's need.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Service)|
|[**ServiceActivity**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ServiceActivity.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Activity offered by the organization to satisfy its customer's needs. Each service activity includes date, time, duration, and required resources.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ServiceAppointment)|
|[**ServiceContractContact**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/ServiceContractContact.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Item in a Service contract.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/ServiceContractContacts)|
|[**Session**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Session.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_Session)|
|[**SessionRegistration**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/SessionRegistration.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_SessionRegistration)|
|[**SessionTrack**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/SessionTrack.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_SessionTrack)|
|[**Site**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Site.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Location or branch office where an organization does business. An organization can have multiple sites.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Site)|
|[**SocialActivity**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/SocialActivity.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|For internal use only.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SocialActivity)|
|[**SocialActivity**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/SocialActivity.cdm.json)|[foundationCommon/crmCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/)|For internal use only.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SocialActivity)|
|[**SocialProfile**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/SocialProfile.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|This entity is used to store social profile information of its associated account and contacts on different social channels.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SocialProfile)|
|[**Speaker**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Speaker.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|Speaker bios of individuals speaking at an event|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_Speaker)|
|[**SpeakerEngagement**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/SpeakerEngagement.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_speakerengagement)|
|[**SponsorableArticle**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/SponsorableArticle.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|An item or a group of items that can be sponsored|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_SponsorableArticle)|
|[**Sponsorship**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Sponsorship.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_Sponsorship)|
|[**Task**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Task.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Generic activity representing work needed to be done.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Task)|
|[**Task**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/Task.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Generic activity representing work needed to be done.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Task)|
|[**Task**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/Task.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)|Generic activity representing work needed to be done.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Task)|
|[**Team**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Team.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Collection of system users that routinely collaborate. Teams can be used to simplify record sharing and provide team members with common access to organization data when team members belong to different Business Units.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Team)|
|[**Territory**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/Territory.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Territory represents sales regions.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/Territory)|
|[**Unit**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/Unit.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Unit of measure.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/UoM)|
|[**UnitGroup**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/UnitGroup.cdm.json)|[applicationCommon/foundationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/)|Grouping of units.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/UoMSchedule)|
|[**User**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/User.cdm.json)|[core/applicationCommon/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/)|Person with access to the Microsoft CRM system and who owns objects in the Microsoft CRM database.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SystemUser)|
|[**User**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/User.cdm.json)|[crmCommon/service/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/service/)|Person with access to the Microsoft CRM system and who owns objects in the Microsoft CRM database.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/SystemUser)|
|[**Venue**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/Venue.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)|The Venue describes the location at which all event sessions and activities take place. A single event venue can be comprised of zero or more buildings, each of which can have zero or more rooms where sessions take place.|[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_Venue)|
|[**WaitlistItem**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/WaitlistItem.cdm.json)|[marketing/eventManagement/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/eventManagement/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msevtmgt_waitlistitem)|
|[**Website**](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/Website.cdm.json)|[solutions/marketing/](https://github.com/Microsoft/CDM/blob/master/schemaDocuments/core/applicationCommon/foundationCommon/crmCommon/solutions/marketing/)||[Docs](https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/msdyncrm_website)|

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,607 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "Activity",
"description": "Task performed, or to be performed, by a user. An activity is any action for which an entry can be made on a calendar.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/Activity.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "owningBusinessUnit",
"description": "Unique identifier of the business unit that owns the activity.",
"sourceColumnName": "owningbusinessunit",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "actualEnd",
"description": "Actual end time of the activity.",
"sourceColumnName": "actualend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"description": "Version number of the activity.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "activityId",
"description": "Unique identifier of the activity.",
"sourceColumnName": "activityid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isBilled",
"description": "Information regarding whether the activity was billed as part of resolving a case.",
"sourceColumnName": "isbilled",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Unique identifier of the user who created the activity.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Description of the activity.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Date and time when activity was last modified.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "activityTypeCode",
"description": "Type of activity.",
"sourceColumnName": "activitytypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "activityTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode",
"description": "Status of the activity.",
"sourceColumnName": "statecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledEnd",
"description": "Scheduled end time of the activity.",
"sourceColumnName": "scheduledend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledDurationMinutes",
"description": "Scheduled duration of the activity, specified in minutes.",
"sourceColumnName": "scheduleddurationminutes",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "actualDurationMinutes",
"description": "Actual duration of the activity in minutes.",
"sourceColumnName": "actualdurationminutes",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode",
"description": "Reason for the status of the activity.",
"sourceColumnName": "statuscode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "ownerId",
"description": "Unique identifier of the user or team who owns the activity.",
"sourceColumnName": "ownerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "actualStart",
"description": "Actual start time of the activity.",
"sourceColumnName": "actualstart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Date and time when the activity was created.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "priorityCode",
"description": "Priority of the activity.",
"sourceColumnName": "prioritycode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "priorityCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "regardingObjectId",
"description": "Unique identifier of the object with which the activity is associated.",
"sourceColumnName": "regardingobjectid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "subject",
"description": "Subject associated with the activity.",
"sourceColumnName": "subject",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isWorkflowCreated",
"description": "Information regarding whether the activity was created from a workflow rule.",
"sourceColumnName": "isworkflowcreated",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledStart",
"description": "Scheduled start time of the activity.",
"sourceColumnName": "scheduledstart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Unique identifier of user who last modified the activity.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningUser",
"description": "Unique identifier of the user that owns the activity.",
"sourceColumnName": "owninguser",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "timeZoneRuleVersionNumber",
"description": "For internal use only.",
"sourceColumnName": "timezoneruleversionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "UTCConversionTimeZoneCode",
"description": "Time zone code that was in use when the record was created.",
"sourceColumnName": "utcconversiontimezonecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "instanceTypeCode",
"description": "Type of instance of a recurring series.",
"sourceColumnName": "instancetypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "instanceTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "seriesId",
"description": "Uniqueidentifier specifying the id of recurring series of an instance.",
"sourceColumnName": "seriesid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isRegularActivity",
"description": "Information regarding whether the activity is a regular activity type or event type.",
"sourceColumnName": "isregularactivity",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Unique identifier of the delegate user who last modified the activitypointer.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Unique identifier of the delegate user who created the activitypointer.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningTeam",
"description": "Unique identifier of the team that owns the activity.",
"sourceColumnName": "owningteam",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "transactionCurrencyId",
"description": "Unique identifier of the currency associated with the activitypointer.",
"sourceColumnName": "transactioncurrencyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeRate",
"description": "Exchange rate for the currency associated with the activitypointer with respect to the base currency.",
"sourceColumnName": "exchangerate",
"dataType": "decimal",
"dataCategory": "Uncategorized"
},
{
"name": "allActivityParties",
"description": "All activity parties associated with this activity.",
"sourceColumnName": "allparties",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "leftVoiceMail",
"description": "Left the voice mail",
"sourceColumnName": "leftvoicemail",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "community",
"description": "Shows how contact about the social activity originated, such as from Twitter or Facebook. This field is read-only.",
"sourceColumnName": "community",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "community_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "traversedPath",
"description": "For internal use only.",
"sourceColumnName": "traversedpath",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isMapiPrivate",
"description": "For internal use only.",
"sourceColumnName": "ismapiprivate",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeWebLink",
"description": "Shows the web link of Activity of type email.",
"sourceColumnName": "exchangeweblink",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeItemId",
"description": "The message id of activity which is returned from Exchange Server.",
"sourceColumnName": "exchangeitemid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "deliveryPriorityCode",
"description": "Priority of delivery of the activity to the email server.",
"sourceColumnName": "deliveryprioritycode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "deliveryPriorityCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "sentOn",
"description": "Date and time when the activity was sent.",
"sourceColumnName": "senton",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "deliveryLastAttemptedOn",
"description": "Date and time when the delivery of the activity was last attempted.",
"sourceColumnName": "deliverylastattemptedon",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "senderMailboxId",
"description": "Unique identifier of the mailbox associated with the sender of the email message.",
"sourceColumnName": "sendermailboxid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "postponeActivityProcessingUntil",
"description": "For internal use only.",
"sourceColumnName": "postponeactivityprocessinguntil",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "processId",
"description": "Unique identifier of the Process.",
"sourceColumnName": "processid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stageId",
"description": "Unique identifier of the Stage.",
"sourceColumnName": "stageid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "activityAdditionalParams",
"description": "Additional information provided by the external application as JSON. For internal use only.",
"sourceColumnName": "activityadditionalparams",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "SLAId",
"description": "Choose the service level agreement (SLA) that you want to apply to the case record.",
"sourceColumnName": "slaid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "SLAInvokedId",
"description": "Last SLA that was applied to this case. This field is for internal use only.",
"sourceColumnName": "slainvokedid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "onHoldTime",
"description": "Shows how long, in minutes, that the record was on hold.",
"sourceColumnName": "onholdtime",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "lastOnHoldTime",
"description": "Contains the date and time stamp of the last on hold time.",
"sourceColumnName": "lastonholdtime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "sortDate",
"description": "Shows the date and time by which the activities are sorted.",
"sourceColumnName": "sortdate",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "owningBusinessUnit"
},
"toAttribute": {
"entityName": "BusinessUnit",
"attributeName": "businessUnitId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "KnowledgeBaseRecord",
"attributeName": "knowledgeBaseRecordId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "KnowledgeArticle",
"attributeName": "knowledgearticleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "owningUser"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "owningTeam"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "transactionCurrencyId"
},
"toAttribute": {
"entityName": "Currency",
"attributeName": "transactionCurrencyId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "SLAId"
},
"toAttribute": {
"entityName": "SLA",
"attributeName": "SLAId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Activity",
"attributeName": "SLAInvokedId"
},
"toAttribute": {
"entityName": "SLA",
"attributeName": "SLAId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,329 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "ActivityParty",
"description": "Person or group associated with an activity. An activity can have multiple activity parties.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/ActivityParty.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "activityId",
"description": "Unique identifier of the activity associated with the activity party. (A \"party\" is any person who is associated with an activity.)",
"sourceColumnName": "activityid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "activityPartyId",
"description": "Unique identifier of the activity party.",
"sourceColumnName": "activitypartyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "partyId",
"description": "Unique identifier of the party associated with the activity.",
"sourceColumnName": "partyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "participationTypeMask",
"description": "Role of the person in the activity, such as sender, to, cc, bcc, required, optional, organizer, regarding, or owner.",
"sourceColumnName": "participationtypemask",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "participationTypeMask_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "addressUsed",
"description": "Email address to which an email is delivered, and which is associated with the target entity.",
"sourceColumnName": "addressused",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "doNotFax",
"description": "Information about whether to allow sending faxes to the activity party.",
"sourceColumnName": "donotfax",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledStart",
"description": "Scheduled start time of the activity.",
"sourceColumnName": "scheduledstart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledEnd",
"description": "Scheduled end time of the activity.",
"sourceColumnName": "scheduledend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "effort",
"description": "Amount of effort used by the resource in a service appointment activity.",
"sourceColumnName": "effort",
"dataType": "double",
"dataCategory": "Uncategorized"
},
{
"name": "doNotEmail",
"description": "Information about whether to allow sending email to the activity party.",
"sourceColumnName": "donotemail",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeEntryId",
"description": "For internal use only.",
"sourceColumnName": "exchangeentryid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "doNotPostalMail",
"description": "Information about whether to allow sending postal mail to the lead.",
"sourceColumnName": "donotpostalmail",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "doNotPhone",
"description": "Information about whether to allow phone calls to the lead.",
"sourceColumnName": "donotphone",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "ownerId",
"description": "Unique identifier of the user or team who owns the activity_party.",
"sourceColumnName": "ownerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "instanceTypeCode",
"description": "Type of instance of a recurring series.",
"sourceColumnName": "instancetypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "instanceTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isPartyDeleted",
"description": "Information about whether the underlying entity record is deleted.",
"sourceColumnName": "ispartydeleted",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "addressUsedEmailColumnNumber",
"description": "Email address column number from associated party.",
"sourceColumnName": "addressusedemailcolumnnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "Activity",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "Appointment",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "Letter",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "PhoneCall",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "RecurringAppointment",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "Email",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "SocialActivity",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "Task",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "Fax",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "partyId"
},
"toAttribute": {
"entityName": "Queue",
"attributeName": "queueId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "partyId"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "partyId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "partyId"
},
"toAttribute": {
"entityName": "KnowledgeArticle",
"attributeName": "knowledgearticleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "partyId"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ActivityParty",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,438 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "Address",
"description": "Address and shipping information. Used to store additional addresses for an account or contact.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/Address.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "parentId",
"description": "Choose the customer's address.",
"sourceColumnName": "parentid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "customerAddressId",
"description": "Unique identifier of the customer address.",
"sourceColumnName": "customeraddressid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "addressNumber",
"description": "Shows the number of the address, to indicate whether the address is the primary, secondary, or other address for the customer.",
"sourceColumnName": "addressnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "objectTypeCode",
"description": "Shows the type code of the customer record to indicate whether the address belongs to a customer account or contact.",
"sourceColumnName": "objecttypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "objectTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "addressTypeCode",
"description": "Select the address type, such as primary or billing.",
"sourceColumnName": "addresstypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "addressTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "name",
"description": "Type a descriptive name for the customer's address, such as Corporate Headquarters.",
"sourceColumnName": "name",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "primaryContactName",
"description": "Type the name of the primary contact person for the customer's address.",
"sourceColumnName": "primarycontactname",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "line1",
"description": "Type the first line of the customer's address to help identify the location.",
"sourceColumnName": "line1",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "line2",
"description": "Type the second line of the customer's address.",
"sourceColumnName": "line2",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "line3",
"description": "Type the third line of the customer's address.",
"sourceColumnName": "line3",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "city",
"description": "Type the city for the customer's address to help identify the location.",
"sourceColumnName": "city",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stateOrProvince",
"description": "Type the state or province of the customer's address.",
"sourceColumnName": "stateorprovince",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "county",
"description": "Type the county for the customer's address.",
"sourceColumnName": "county",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "country",
"description": "Type the country or region for the customer's address.",
"sourceColumnName": "country",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "postOfficeBox",
"description": "Type the post office box number of the customer's address.",
"sourceColumnName": "postofficebox",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "postalCode",
"description": "Type the ZIP Code or postal code for the address.",
"sourceColumnName": "postalcode",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "UTCOffset",
"description": "Select the time zone for the address.",
"sourceColumnName": "utcoffset",
"dataType": "string",
"dataCategory": "Location.Timezone"
},
{
"name": "freightTermsCode",
"description": "Select the freight terms to make sure shipping charges are processed correctly.",
"sourceColumnName": "freighttermscode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "freightTermsCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "UPSZone",
"description": "Type the UPS zone of the customer's address to make sure shipping charges are calculated correctly and deliveries are made promptly, if shipped by UPS.",
"sourceColumnName": "upszone",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "latitude",
"description": "Type the latitude value for the customer's address, for use in mapping and other applications.",
"sourceColumnName": "latitude",
"dataType": "double",
"dataCategory": "Uncategorized"
},
{
"name": "telephone1",
"description": "Type the primary phone number for the customer's address.",
"sourceColumnName": "telephone1",
"dataType": "string",
"dataCategory": "Identity.Service.Phone"
},
{
"name": "longitude",
"description": "Type the longitude value for the customer's address, for use in mapping and other applications.",
"sourceColumnName": "longitude",
"dataType": "double",
"dataCategory": "Uncategorized"
},
{
"name": "shippingMethodCode",
"description": "Select a shipping method for deliveries sent to this address.",
"sourceColumnName": "shippingmethodcode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "shippingMethodCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "telephone2",
"description": "Type a second phone number for the customer's address.",
"sourceColumnName": "telephone2",
"dataType": "string",
"dataCategory": "Identity.Service.Phone"
},
{
"name": "telephone3",
"description": "Type a third phone number for the customer's address.",
"sourceColumnName": "telephone3",
"dataType": "string",
"dataCategory": "Identity.Service.Phone"
},
{
"name": "fax",
"description": "Type the fax number associated with the customer's address.",
"sourceColumnName": "fax",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"description": "Version number of the customer address.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Shows who created the record.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "modifiedBy",
"description": "Shows who last updated the record.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "owningBusinessUnit",
"description": "Shows the business unit that the record owner belongs to.",
"sourceColumnName": "owningbusinessunit",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningUser",
"description": "Unique identifier of the user who owns the customer address.",
"sourceColumnName": "owninguser",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "timeZoneRuleVersionNumber",
"description": "For internal use only.",
"sourceColumnName": "timezoneruleversionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "UTCConversionTimeZoneCode",
"description": "Time zone code that was in use when the record was created.",
"sourceColumnName": "utcconversiontimezonecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "ownerId",
"description": "Enter the user or team who is assigned to manage the record. This field is updated every time the record is assigned to a different user.",
"sourceColumnName": "ownerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Shows who created the record on behalf of another user.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Shows who last updated the record on behalf of another user.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "transactionCurrencyId",
"description": "Choose the local currency for the record to make sure budgets are reported in the correct currency.",
"sourceColumnName": "transactioncurrencyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeRate",
"description": "Shows the conversion rate of the record's currency. The exchange rate is used to convert all money fields in the record from the local currency to the system's default currency.",
"sourceColumnName": "exchangerate",
"dataType": "decimal",
"dataCategory": "Uncategorized"
},
{
"name": "composite",
"description": "Shows the complete address.",
"sourceColumnName": "composite",
"dataType": "string",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Address",
"attributeName": "parentId"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Address",
"attributeName": "parentId"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Address",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Address",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Address",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Address",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Address",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Address",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Address",
"attributeName": "transactionCurrencyId"
},
"toAttribute": {
"entityName": "Currency",
"attributeName": "transactionCurrencyId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,998 +0,0 @@
{
"jsonSchemaSemanticVersion": "0.5.0",
"entity": {
"semanticDomain": {
"class": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
}
},
"description": "Note that is attached to one or more objects, including other notes.",
"displayName": "Note",
"attributes": [
{
"name": "annotationid",
"dataType": "Guid",
"displayName": "Note",
"description": "Unique identifier of the note.",
"semanticDomain": {
"semanticType": "Object.Identity.UniqueIdentifer",
"isPrimaryKey": true
}
},
{
"name": "objecttypecode_display",
"dataType": "String",
"semanticDomain": {
"semanticType": "Measurement.OptionCode.Display",
"inSupportOf": "objecttypecode",
"isReadOnly": true
}
},
{
"name": "objecttypecode",
"dataType": "String",
"displayName": "Object Type ",
"description": "Type of entity with which the note is associated.",
"semanticDomain": {
"semanticType": "Measurement.OptionCode",
"constrainedList": {
"name": "annotation_objecttypecode",
"displayName": "Object Type ",
"description": "Type of entity with which the note is associated.",
"items": [
{
"value": 1,
"displayName": "Account"
},
{
"value": 4201,
"displayName": "Appointment"
},
{
"value": 4407,
"displayName": "Bulk Import"
},
{
"value": 4003,
"displayName": "Calendar"
},
{
"value": 4400,
"displayName": "Campaign"
},
{
"value": 4402,
"displayName": "Campaign Activity"
},
{
"value": 4401,
"displayName": "Campaign Response"
},
{
"value": 112,
"displayName": "Case"
},
{
"value": 4206,
"displayName": "Case Resolution"
},
{
"value": 4215,
"displayName": "Commitment"
},
{
"value": 123,
"displayName": "Competitor"
},
{
"value": 2,
"displayName": "Contact"
},
{
"value": 1010,
"displayName": "Contract"
},
{
"value": 1011,
"displayName": "Contract Line"
},
{
"value": 4202,
"displayName": "Email"
},
{
"value": 4000,
"displayName": "Facility/Equipment"
},
{
"value": 4204,
"displayName": "Fax"
},
{
"value": 1090,
"displayName": "Invoice"
},
{
"value": 4,
"displayName": "Lead"
},
{
"value": 4207,
"displayName": "Letter"
},
{
"value": 4300,
"displayName": "Marketing List"
},
{
"value": 3,
"displayName": "Opportunity"
},
{
"value": 4208,
"displayName": "Opportunity Close"
},
{
"value": 1088,
"displayName": "Order"
},
{
"value": 4209,
"displayName": "Order Close"
},
{
"value": 4210,
"displayName": "Phone Call"
},
{
"value": 1024,
"displayName": "Product"
},
{
"value": 1084,
"displayName": "Quote"
},
{
"value": 4211,
"displayName": "Quote Close"
},
{
"value": 4006,
"displayName": "Resource Specification"
},
{
"value": 4001,
"displayName": "Service"
},
{
"value": 4214,
"displayName": "Service Activity"
},
{
"value": 4212,
"displayName": "Task"
},
{
"value": 8181,
"displayName": "Routing Rule"
},
{
"value": 8199,
"displayName": "Routing Rule Item"
}
]
}
}
},
{
"name": "owninguser",
"dataType": "Guid",
"displayName": "Owning User",
"description": "Unique identifier of the user who owns the note.",
"semanticDomain": {
}
},
{
"name": "objectid",
"dataType": "Guid",
"displayName": "Regarding",
"description": "Unique identifier of the object with which the note is associated.",
"semanticDomain": {
}
},
{
"name": "owningbusinessunit",
"dataType": "Guid",
"displayName": "Owning Business Unit",
"description": "Unique identifier of the business unit that owns the note.",
"semanticDomain": {
}
},
{
"name": "subject",
"dataType": "String",
"displayName": "Title",
"description": "Subject associated with the note.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 500
}
},
{
"name": "isdocument",
"dataType": "Boolean",
"displayName": "Is Document",
"description": "Specifies whether the note is an attachment.",
"semanticDomain": {
}
},
{
"name": "notetext",
"dataType": "String",
"displayName": "Description",
"description": "Text of the note.",
"semanticDomain": {
"maxLength": 100000
}
},
{
"name": "mimetype",
"dataType": "String",
"displayName": "Mime Type",
"description": "MIME type of the note's attachment.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 256
}
},
{
"name": "langid",
"dataType": "String",
"displayName": "Language ID",
"description": "Language identifier for the note.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 2
}
},
{
"name": "documentbody",
"dataType": "String",
"displayName": "Document",
"description": "Contents of the note's attachment.",
"semanticDomain": {
"semanticType": "internalextentdata",
"maxLength": 1073741823
}
},
{
"name": "createdon",
"dataType": "DateTimeOffset",
"displayName": "Created On",
"description": "Date and time when the note was created.",
"semanticDomain": {
"semanticType": "Measurement.Date.Creation"
}
},
{
"name": "filesize",
"dataType": "Int32",
"displayName": "File Size (Bytes)",
"description": "File size of the note.",
"semanticDomain": {
"minValue": 0,
"maxValue": 1000000000
}
},
{
"name": "filename",
"dataType": "String",
"displayName": "File Name",
"description": "File name of the note.",
"semanticDomain": {
"semanticType": "Object.Identity.Name",
"maxLength": 255
}
},
{
"name": "createdby",
"dataType": "Guid",
"displayName": "Created By",
"description": "Unique identifier of the user who created the note.",
"semanticDomain": {
}
},
{
"name": "modifiedby",
"dataType": "Guid",
"displayName": "Modified By",
"description": "Unique identifier of the user who last modified the note.",
"semanticDomain": {
}
},
{
"name": "modifiedon",
"dataType": "DateTimeOffset",
"displayName": "Modified On",
"description": "Date and time when the note was last modified.",
"semanticDomain": {
"semanticType": "Measurement.Date.Modify"
}
},
{
"name": "versionnumber",
"dataType": "Int64",
"displayName": "Version Number",
"description": "Version number of the note.",
"semanticDomain": {
}
},
{
"name": "ownerid",
"dataType": "Guid",
"displayName": "Owner",
"description": "Unique identifier of the user or team who owns the note.",
"semanticDomain": {
}
},
{
"name": "stepid",
"dataType": "String",
"displayName": "Step Id",
"description": "workflow step id associated with the note.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 32
}
},
{
"name": "overriddencreatedon",
"dataType": "DateTimeOffset",
"displayName": "Record Created On",
"description": "Date and time that the record was migrated.",
"semanticDomain": {
"semanticType": "Measurement.Date.Creation"
}
},
{
"name": "importsequencenumber",
"dataType": "Int32",
"displayName": "Import Sequence Number",
"description": "Unique identifier of the data import or data migration that created this record.",
"semanticDomain": {
"minValue": -2147483648,
"maxValue": 2147483647
}
},
{
"name": "createdonbehalfby",
"dataType": "Guid",
"displayName": "Created By (Delegate)",
"description": "Unique identifier of the delegate user who created the annotation.",
"semanticDomain": {
}
},
{
"name": "modifiedonbehalfby",
"dataType": "Guid",
"displayName": "Modified By (Delegate)",
"description": "Unique identifier of the delegate user who last modified the annotation.",
"semanticDomain": {
}
},
{
"name": "owningteam",
"dataType": "Guid",
"displayName": "Owning Team",
"description": "Unique identifier of the team who owns the note.",
"semanticDomain": {
}
}
]
},
"relationships": [
{
"name": "implicit_user",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "ownerid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "SystemUser",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "d3b9b209-0928-f247-03da-7c3fac836476"
},
"attributes": [
{
"name": "systemuserid",
"comparisonOrder": 0
}
]
}
},
{
"name": "implicit_team",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "ownerid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Team",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "e2069f47-358d-adfd-cf3e-0f0b0bda674d"
},
"attributes": [
{
"name": "teamid",
"comparisonOrder": 0
}
]
}
},
{
"name": "business_unit_annotations",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "owningbusinessunit",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "BusinessUnit",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "3dcce49f-2ce7-90a7-ba26-553d44aa21dd"
},
"attributes": [
{
"name": "businessunitid",
"comparisonOrder": 0
}
]
}
},
{
"name": "owner_annotations",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "ownerid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Owner",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "0a918fe7-0f50-d085-ce9d-2571b1be046d"
},
"attributes": [
{
"name": "ownerid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Account_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Account",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "07f94632-fb5e-f556-52bf-e5d7d4060d1e"
},
"attributes": [
{
"name": "accountid",
"comparisonOrder": 0
}
]
}
},
{
"name": "RecurringAppointmentMaster_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "RecurringAppointmentMaster",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "00f24fd1-0929-0239-436e-0d055b2926e5"
},
"attributes": [
{
"name": "activityid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Fax_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Fax",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "035be2dd-641b-c15f-5dbf-f3c7b8dcb783"
},
"attributes": [
{
"name": "activityid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Email_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Email",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "771369e3-9291-4dfb-5ef7-6cb95353bc41"
},
"attributes": [
{
"name": "activityid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Letter_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Letter",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "8dc11d90-b486-4699-d2c9-edb4b9d9e61a"
},
"attributes": [
{
"name": "activityid",
"comparisonOrder": 0
}
]
}
},
{
"name": "sla_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "SLA",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "11d00209-93ba-012e-7d61-e503551b1170"
},
"attributes": [
{
"name": "slaid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Goal_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Goal",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "cb0daa43-f622-578d-ac1b-f48d34eeeaf2"
},
"attributes": [
{
"name": "goalid",
"comparisonOrder": 0
}
]
}
},
{
"name": "KbArticle_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "KbArticle",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "aff22c88-6c60-3d89-1cf8-5b6622304027"
},
"attributes": [
{
"name": "kbarticleid",
"comparisonOrder": 0
}
]
}
},
{
"name": "knowledgearticle_Annotations",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "KnowledgeArticle",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "a7328c56-01fd-9ec0-f16f-aab8964aa3f1"
},
"attributes": [
{
"name": "knowledgearticleid",
"comparisonOrder": 0
}
]
}
},
{
"name": "KnowledgeBaseRecord_Annotations",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "KnowledgeBaseRecord",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "8795744d-bd15-7bb1-5992-e8d1187ed134"
},
"attributes": [
{
"name": "knowledgebaserecordid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Contact_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Contact",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "0ed5931f-678a-d8b1-5383-3e7ea104bb3c"
},
"attributes": [
{
"name": "contactid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Appointment_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Appointment",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "05d93aa4-fd94-61df-a697-292673d6aff1"
},
"attributes": [
{
"name": "activityid",
"comparisonOrder": 0
}
]
}
},
{
"name": "SocialActivity_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "SocialActivity",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "537c8d1b-4f37-f6fc-c207-ac33bca162f1"
},
"attributes": [
{
"name": "activityid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Task_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Task",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "6e661611-4269-802c-26a0-bdd02b8584f6"
},
"attributes": [
{
"name": "activityid",
"comparisonOrder": 0
}
]
}
},
{
"name": "PhoneCall_Annotation",
"referencing": {
"entity": {
"type": "Annotation",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "4d244554-b5b2-b9ad-505a-244a76f50f04"
},
"attributes": [
{
"name": "objectid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "PhoneCall",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "91e6cc0c-863d-158b-5daa-00dab6ca0410"
},
"attributes": [
{
"name": "activityid",
"comparisonOrder": 0
}
]
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,659 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "Appointment",
"description": "Commitment representing a time interval with start/end times and duration.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/Appointment.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "createdBy",
"description": "Shows who created the record.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "isAllDayEvent",
"description": "Select whether the appointment is an all-day event to make sure that the required resources are scheduled for the full day.",
"sourceColumnName": "isalldayevent",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "actualEnd",
"description": "Enter the actual end date and time of the appointment. By default, it displays the date and time when the activity was completed or canceled, but can be edited to capture the actual duration of the appointment.",
"sourceColumnName": "actualend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "subject",
"description": "Type a short description about the objective or primary topic of the appointment.",
"sourceColumnName": "subject",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "category",
"description": "Type a category to identify the appointment type, such as sales demo, prospect call, or service call, to tie the appointment to a business group or function.",
"sourceColumnName": "category",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isWorkflowCreated",
"description": "Information regarding whether the appointment was created from a workflow rule.",
"sourceColumnName": "isworkflowcreated",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "regardingObjectId",
"description": "Choose the record that the appointment relates to.",
"sourceColumnName": "regardingobjectid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Type additional information to describe the purpose of the appointment.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isBilled",
"description": "Information regarding whether the appointment was billed as part of resolving a case.",
"sourceColumnName": "isbilled",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledDurationMinutes",
"description": "Shows the expected duration of the appointment, in minutes.",
"sourceColumnName": "scheduleddurationminutes",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "optionalAttendees",
"description": "Enter the account, contact, lead, user, or other equipment resources that are not needed at the appointment, but can optionally attend.",
"sourceColumnName": "optionalattendees",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "globalObjectId",
"description": "Shows the ID of the appointment in Microsoft Office Outlook. The ID is used to synchronize the appointment between Microsoft Dynamics 365 and the correct Exchange account.",
"sourceColumnName": "globalobjectid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledStart",
"description": "Enter the expected start date and time for the activity to provide details about the timing of the appointment.",
"sourceColumnName": "scheduledstart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode",
"description": "Select the appointment's status.",
"sourceColumnName": "statuscode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "outlookOwnerApptId",
"description": "Unique identifier of the Microsoft Office Outlook appointment owner that correlates to the PR_OWNER_APPT_ID MAPI property.",
"sourceColumnName": "outlookownerapptid",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledEnd",
"description": "Enter the expected due date and time for the activity to be completed to provide details about the timing of the appointment.",
"sourceColumnName": "scheduledend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "actualDurationMinutes",
"description": "Shows the value selected in the Duration field on the appointment at the time that the appointment is closed as completed. The duration is used to report the time spent on the activity.",
"sourceColumnName": "actualdurationminutes",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "location",
"description": "Type the location where the appointment will take place, such as a conference room or customer office.",
"sourceColumnName": "location",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "actualStart",
"description": "Enter the actual start date and time for the appointment. By default, it displays the date and time when the activity was created, but can be edited to capture the actual duration of the appointment.",
"sourceColumnName": "actualstart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "organizer",
"description": "Enter the user who is in charge of coordinating or leading the appointment to make sure the appointment is displayed in the user's My Activities view.",
"sourceColumnName": "organizer",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"description": "Version number of the appointment.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "ownerId",
"description": "Enter the user or team who is assigned to manage the record. This field is updated every time the record is assigned to a different user.",
"sourceColumnName": "ownerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Shows who last updated the record.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode",
"description": "Shows whether the appointment is open, completed, or canceled. Completed and canceled appointments are read-only and can't be edited.",
"sourceColumnName": "statecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "activityId",
"description": "Unique identifier of the appointment.",
"sourceColumnName": "activityid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningBusinessUnit",
"description": "Shows the business unit that the record owner belongs to.",
"sourceColumnName": "owningbusinessunit",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "priorityCode",
"description": "Select the priority so that preferred customers or critical issues are handled quickly.",
"sourceColumnName": "prioritycode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "priorityCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "subcategory",
"description": "Type a subcategory to identify the appointment type and relate the activity to a specific product, sales region, business group, or other function.",
"sourceColumnName": "subcategory",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "requiredAttendees",
"description": "Enter the account, contact, lead, user, or other equipment resources that are required to attend the appointment.",
"sourceColumnName": "requiredattendees",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningUser",
"description": "Unique identifier of the user that owns the appointment.",
"sourceColumnName": "owninguser",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "UTCConversionTimeZoneCode",
"description": "Time zone code that was in use when the record was created.",
"sourceColumnName": "utcconversiontimezonecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "timeZoneRuleVersionNumber",
"description": "For internal use only.",
"sourceColumnName": "timezoneruleversionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "traversedPath",
"description": "For internal use only.",
"sourceColumnName": "traversedpath",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "instanceTypeCode",
"description": "Type of instance of a recurring series.",
"sourceColumnName": "instancetypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "instanceTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedFieldsMask",
"description": "For internal use only. ",
"sourceColumnName": "modifiedfieldsmask",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "seriesId",
"description": "Shows the ID of the recurring series of an instance.",
"sourceColumnName": "seriesid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "originalStartDate",
"description": "The original start date of the appointment.",
"sourceColumnName": "originalstartdate",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Shows who created the record on behalf of another user.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Shows who created the record on behalf of another user.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "activityTypeCode",
"description": "Type of activity.",
"sourceColumnName": "activitytypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "activityTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isRegularActivity",
"description": "Information regarding whether the activity is a regular activity type or event type.",
"sourceColumnName": "isregularactivity",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "owningTeam",
"description": "Unique identifier of the team that owns the appointment.",
"sourceColumnName": "owningteam",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "transactionCurrencyId",
"description": "Choose the local currency for the record to make sure budgets are reported in the correct currency.",
"sourceColumnName": "transactioncurrencyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeRate",
"description": "Shows the conversion rate of the record's currency. The exchange rate is used to convert all money fields in the record from the local currency to the system's default currency.",
"sourceColumnName": "exchangerate",
"dataType": "decimal",
"dataCategory": "Uncategorized"
},
{
"name": "isMapiPrivate",
"description": "For internal use only.",
"sourceColumnName": "ismapiprivate",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "processId",
"description": "Shows the ID of the process.",
"sourceColumnName": "processid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stageId",
"description": "Shows the ID of the stage.",
"sourceColumnName": "stageid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "attachmentErrors",
"description": "Select the error code to identify issues with the outlook item recipients or attachments, such as blocked attachments.",
"sourceColumnName": "attachmenterrors",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "attachmentErrors_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "attachmentCount",
"description": "Shows the number of attachments on the appointment.",
"sourceColumnName": "attachmentcount",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "activityAdditionalParams",
"description": "For internal use only.",
"sourceColumnName": "activityadditionalparams",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "SLAId",
"description": "Choose the service level agreement (SLA) that you want to apply to the appointment record.",
"sourceColumnName": "slaid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "SLAInvokedId",
"description": "Last SLA that was applied to this appointment. This field is for internal use only.",
"sourceColumnName": "slainvokedid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "onHoldTime",
"description": "Shows how long, in minutes, that the record was on hold.",
"sourceColumnName": "onholdtime",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "lastOnHoldTime",
"description": "Contains the date and time stamp of the last on hold time.",
"sourceColumnName": "lastonholdtime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "sortDate",
"description": "Shows the date and time by which the activities are sorted.",
"sourceColumnName": "sortdate",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "KnowledgeBaseRecord",
"attributeName": "knowledgeBaseRecordId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "KnowledgeArticle",
"attributeName": "knowledgearticleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "Activity",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "owningBusinessUnit"
},
"toAttribute": {
"entityName": "BusinessUnit",
"attributeName": "businessUnitId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "owningUser"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "seriesId"
},
"toAttribute": {
"entityName": "RecurringAppointment",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "owningTeam"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "transactionCurrencyId"
},
"toAttribute": {
"entityName": "Currency",
"attributeName": "transactionCurrencyId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "SLAId"
},
"toAttribute": {
"entityName": "SLA",
"attributeName": "SLAId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Appointment",
"attributeName": "SLAInvokedId"
},
"toAttribute": {
"entityName": "SLA",
"attributeName": "SLAId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,287 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "Article",
"description": "Structured content that is part of the knowledge base.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/Article.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "kbArticleId",
"description": "Shows the ID of the article.",
"sourceColumnName": "kbarticleid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "kbArticleTemplateId",
"description": "Choose the template that you want to use as a base for creating the new article.",
"sourceColumnName": "kbarticletemplateid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "organizationId",
"description": "Unique identifier of the organization associated with the article.",
"sourceColumnName": "organizationid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "subjectId",
"description": "Choose the subject of the article to assist with article searches. You can configure subjects under Business Management in the Settings area.",
"sourceColumnName": "subjectid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "articleXml",
"description": "Shows the article content and formatting, stored as XML.",
"sourceColumnName": "articlexml",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "title",
"description": "Type a subject or descriptive name for the article to assist with article searches.",
"sourceColumnName": "title",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "number",
"description": "Knowledge base article number.",
"sourceColumnName": "number",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "content",
"description": "Description of the content of the knowledge base article.",
"sourceColumnName": "content",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Type additional information that describes the knowledge base article.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "comments",
"description": "Comments regarding the knowledge base article.",
"sourceColumnName": "comments",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Date and time when the knowledge base article was created.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "createdBy",
"description": "Unique identifier of the user who created the knowledge base article.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Unique identifier of the user who last modified the knowledge base article.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Date and time when the knowledge base article was last modified.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "stateCode",
"description": "Shows whether the knowledge base article is in draft, unapproved, or published status. Published articles are read-only and can't be edited unless they are unpublished.",
"sourceColumnName": "statecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode",
"description": "Select the article's status.",
"sourceColumnName": "statuscode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"description": "Title of the knowledge base article.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "keyWords",
"description": "Keywords to be used for searches in knowledge base articles.",
"sourceColumnName": "keywords",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "createdOnBehalfBy",
"description": "Unique identifier of the delegate user who created the article.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Unique identifier of the delegate user who last modified the kbarticle.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "languageCode",
"description": "Select which language the article must be available in. This list is based on the list of language packs that are installed in your Microsoft Dynamics 365 environment.",
"sourceColumnName": "languagecode",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeRate",
"description": "Shows the conversion rate of the record's currency. The exchange rate is used to convert all money fields in the record from the local currency to the system's default currency.",
"sourceColumnName": "exchangerate",
"dataType": "decimal",
"dataCategory": "Uncategorized"
},
{
"name": "transactionCurrencyId",
"description": "Choose the local currency for the record to make sure budgets are reported in the correct currency.",
"sourceColumnName": "transactioncurrencyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "entityImageId",
"description": "For internal use only.",
"sourceColumnName": "entityimageid",
"dataType": "string",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Article",
"attributeName": "kbArticleTemplateId"
},
"toAttribute": {
"entityName": "ArticleTemplate",
"attributeName": "kbArticleTemplateId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Article",
"attributeName": "organizationId"
},
"toAttribute": {
"entityName": "Organization",
"attributeName": "organizationId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Article",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Article",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Article",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Article",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Article",
"attributeName": "transactionCurrencyId"
},
"toAttribute": {
"entityName": "Currency",
"attributeName": "transactionCurrencyId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,859 @@
{
"schemaVersion": "0.6.0",
"imports": [
{
"uri": "_allImports.0.6.cdm.json"
}
],
"definitions": [
{
"entityName": "ArticleComment",
"extendsEntity": "CdmObject",
"exhibitsTraits": [
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Article Comment"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Comment on a knowledge base article."
]
]
}
}
]
}
],
"displayName": "Article Comment",
"description": "Comment on a knowledge base article.",
"sourceName": "KbArticleComment",
"version": "0.6",
"hasAttributes": [
{
"attributeGroupReference": {
"attributeGroupName": "attributesAddedAtThisScope",
"exhibitsTraits": [
{
"traitReference": "is.CDM.attributeGroup",
"arguments": [
{
"entityReference": {
"entityShape": "attributeGroupSet",
"constantValues": [
[
"/core/applicationCommon/ArticleComment.cdm.json/ArticleComment/hasAttributes/attributesAddedAtThisScope"
]
]
}
}
]
}
],
"members": [
{
"name": "kbArticleCommentId",
"relationship": "identifiedBy",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "systemrequired"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Article Comment"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the knowledge base article comment."
]
]
}
}
]
}
],
"displayName": "Article Comment",
"description": "Unique identifier of the knowledge base article comment.",
"sourceName": "kbarticlecommentid",
"sourceOrdering": 1
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'Article' adds the 'kbArticleId' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "kbArticleId",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "systemrequired"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"KB Article"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the knowledge base article to which the comment applies."
]
]
}
}
]
}
],
"displayName": "KB Article",
"description": "Unique identifier of the knowledge base article to which the comment applies.",
"sourceName": "kbarticleid",
"sourceOrdering": 2
}
}
]
}
]
},
"entity": {
"entityReference": "Article",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"Article/(resolvedAttributes)/kbArticleId"
]
}
]
}
},
{
"name": "title",
"relationship": "hasA",
"dataType": "string",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "required"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Title"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Title of the knowledge base article comment."
]
]
}
}
]
}
],
"displayName": "Title",
"description": "Title of the knowledge base article comment.",
"isNullable": true,
"sourceName": "title",
"sourceOrdering": 3,
"maximumLength": 200
},
{
"name": "commentText",
"relationship": "hasA",
"dataType": "string",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Comment Text"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Comment text for the knowledge base article."
]
]
}
}
]
}
],
"displayName": "Comment Text",
"description": "Comment text for the knowledge base article.",
"isNullable": true,
"sourceName": "commenttext",
"sourceOrdering": 4,
"maximumLength": 100000
},
{
"name": "createdOn",
"relationship": "createdOn",
"dataType": "dateTime",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Created On"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Date and time when the knowledge base article comment was created."
]
]
}
}
]
}
],
"displayName": "Created On",
"description": "Date and time when the knowledge base article comment was created.",
"isNullable": true,
"sourceName": "createdon",
"sourceOrdering": 5
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'User' adds the 'createdBy' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "createdBy",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Created By"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the user who created the knowledge base article comment."
]
]
}
}
]
}
],
"displayName": "Created By",
"description": "Unique identifier of the user who created the knowledge base article comment.",
"isNullable": true,
"sourceName": "createdby",
"sourceOrdering": 6
}
}
]
}
]
},
"entity": {
"entityReference": "User",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"User/(resolvedAttributes)/systemUserId"
]
}
]
}
},
{
"name": "modifiedOn",
"relationship": "modifiedOn",
"dataType": "dateTime",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Modified On"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Date and time when the knowledge base article comment was last modified."
]
]
}
}
]
}
],
"displayName": "Modified On",
"description": "Date and time when the knowledge base article comment was last modified.",
"isNullable": true,
"sourceName": "modifiedon",
"sourceOrdering": 7
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'User' adds the 'modifiedBy' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "modifiedBy",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Modified By"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the user who last modified the knowledge base article comment."
]
]
}
}
]
}
],
"displayName": "Modified By",
"description": "Unique identifier of the user who last modified the knowledge base article comment.",
"isNullable": true,
"sourceName": "modifiedby",
"sourceOrdering": 8
}
}
]
}
]
},
"entity": {
"entityReference": "User",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"User/(resolvedAttributes)/systemUserId"
]
}
]
}
},
{
"name": "versionNumber",
"relationship": "hasA",
"dataType": "bigInteger",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
}
],
"isNullable": true,
"sourceName": "versionnumber",
"sourceOrdering": 13
},
{
"name": "organizationId",
"relationship": "hasA",
"dataType": "guid",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "systemrequired"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Organization "
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the organization with which the article comment is associated."
]
]
}
}
]
}
],
"displayName": "Organization ",
"description": "Unique identifier of the organization with which the article comment is associated.",
"sourceName": "organizationid",
"sourceOrdering": 14
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'User' adds the 'createdOnBehalfBy' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "createdOnBehalfBy",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Created By (Delegate)"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the delegate user who created the kbarticlecomment."
]
]
}
}
]
}
],
"displayName": "Created By (Delegate)",
"description": "Unique identifier of the delegate user who created the kbarticlecomment.",
"isNullable": true,
"sourceName": "createdonbehalfby",
"sourceOrdering": 17
}
}
]
}
]
},
"entity": {
"entityReference": "User",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"User/(resolvedAttributes)/systemUserId"
]
}
]
}
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'User' adds the 'modifiedOnBehalfBy' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "modifiedOnBehalfBy",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Modified By (Delegate)"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the delegate user who last modified the kbarticlecomment."
]
]
}
}
]
}
],
"displayName": "Modified By (Delegate)",
"description": "Unique identifier of the delegate user who last modified the kbarticlecomment.",
"isNullable": true,
"sourceName": "modifiedonbehalfby",
"sourceOrdering": 21
}
}
]
}
]
},
"entity": {
"entityReference": "User",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"User/(resolvedAttributes)/systemUserId"
]
}
]
}
}
]
}
}
]
}
]
}

Просмотреть файл

@ -0,0 +1,156 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "ArticleComment",
"description": "Comment on a knowledge base article.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/ArticleComment.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "kbArticleCommentId",
"description": "Unique identifier of the knowledge base article comment.",
"sourceColumnName": "kbarticlecommentid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "kbArticleId",
"description": "Unique identifier of the knowledge base article to which the comment applies.",
"sourceColumnName": "kbarticleid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "title",
"description": "Title of the knowledge base article comment.",
"sourceColumnName": "title",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "commentText",
"description": "Comment text for the knowledge base article.",
"sourceColumnName": "commenttext",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Date and time when the knowledge base article comment was created.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "createdBy",
"description": "Unique identifier of the user who created the knowledge base article comment.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Date and time when the knowledge base article comment was last modified.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "modifiedBy",
"description": "Unique identifier of the user who last modified the knowledge base article comment.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "organizationId",
"description": "Unique identifier of the organization with which the article comment is associated.",
"sourceColumnName": "organizationid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Unique identifier of the delegate user who created the kbarticlecomment.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Unique identifier of the delegate user who last modified the kbarticlecomment.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleComment",
"attributeName": "kbArticleId"
},
"toAttribute": {
"entityName": "Article",
"attributeName": "kbArticleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleComment",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleComment",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleComment",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleComment",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
}
]
}

Просмотреть файл

@ -0,0 +1,858 @@
{
"schemaVersion": "0.6.0",
"imports": [
{
"uri": "_allImports.cdm.json"
}
],
"definitions": [
{
"entityName": "ArticleComment",
"extendsEntity": "CdmObject",
"exhibitsTraits": [
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Article Comment"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Comment on a knowledge base article."
]
]
}
}
]
}
],
"displayName": "Article Comment",
"description": "Comment on a knowledge base article.",
"sourceName": "KbArticleComment",
"hasAttributes": [
{
"attributeGroupReference": {
"attributeGroupName": "attributesAddedAtThisScope",
"exhibitsTraits": [
{
"traitReference": "is.CDM.attributeGroup",
"arguments": [
{
"entityReference": {
"entityShape": "attributeGroupSet",
"constantValues": [
[
"/core/applicationCommon/ArticleComment.cdm.json/ArticleComment/hasAttributes/attributesAddedAtThisScope"
]
]
}
}
]
}
],
"members": [
{
"name": "kbArticleCommentId",
"relationship": "identifiedBy",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "systemrequired"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Article Comment"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the knowledge base article comment."
]
]
}
}
]
}
],
"sourceName": "kbarticlecommentid",
"sourceOrdering": 1,
"displayName": "Article Comment",
"description": "Unique identifier of the knowledge base article comment."
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'Article' adds the 'kbArticleId' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "kbArticleId",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "systemrequired"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"KB Article"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the knowledge base article to which the comment applies."
]
]
}
}
]
}
],
"sourceName": "kbarticleid",
"sourceOrdering": 2,
"displayName": "KB Article",
"description": "Unique identifier of the knowledge base article to which the comment applies."
}
}
]
}
]
},
"entity": {
"entityReference": "Article",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"Article/(resolvedAttributes)/kbArticleId"
]
}
]
}
},
{
"name": "title",
"relationship": "hasA",
"dataType": "string",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "required"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Title"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Title of the knowledge base article comment."
]
]
}
}
]
}
],
"sourceName": "title",
"maximumLength": 200,
"sourceOrdering": 3,
"isNullable": true,
"displayName": "Title",
"description": "Title of the knowledge base article comment."
},
{
"name": "commentText",
"relationship": "hasA",
"dataType": "string",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Comment Text"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Comment text for the knowledge base article."
]
]
}
}
]
}
],
"sourceName": "commenttext",
"maximumLength": 100000,
"sourceOrdering": 4,
"isNullable": true,
"displayName": "Comment Text",
"description": "Comment text for the knowledge base article."
},
{
"name": "createdOn",
"relationship": "createdOn",
"dataType": "dateTime",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Created On"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Date and time when the knowledge base article comment was created."
]
]
}
}
]
}
],
"sourceName": "createdon",
"sourceOrdering": 5,
"isNullable": true,
"displayName": "Created On",
"description": "Date and time when the knowledge base article comment was created."
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'User' adds the 'createdBy' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "createdBy",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Created By"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the user who created the knowledge base article comment."
]
]
}
}
]
}
],
"sourceName": "createdby",
"sourceOrdering": 6,
"isNullable": true,
"displayName": "Created By",
"description": "Unique identifier of the user who created the knowledge base article comment."
}
}
]
}
]
},
"entity": {
"entityReference": "User",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"User/(resolvedAttributes)/systemUserId"
]
}
]
}
},
{
"name": "modifiedOn",
"relationship": "modifiedOn",
"dataType": "dateTime",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Modified On"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Date and time when the knowledge base article comment was last modified."
]
]
}
}
]
}
],
"sourceName": "modifiedon",
"sourceOrdering": 7,
"isNullable": true,
"displayName": "Modified On",
"description": "Date and time when the knowledge base article comment was last modified."
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'User' adds the 'modifiedBy' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "modifiedBy",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Modified By"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the user who last modified the knowledge base article comment."
]
]
}
}
]
}
],
"sourceName": "modifiedby",
"sourceOrdering": 8,
"isNullable": true,
"displayName": "Modified By",
"description": "Unique identifier of the user who last modified the knowledge base article comment."
}
}
]
}
]
},
"entity": {
"entityReference": "User",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"User/(resolvedAttributes)/systemUserId"
]
}
]
}
},
{
"name": "versionNumber",
"relationship": "hasA",
"dataType": "bigInteger",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
}
],
"sourceName": "versionnumber",
"sourceOrdering": 13,
"isNullable": true
},
{
"name": "organizationId",
"relationship": "hasA",
"dataType": "guid",
"appliedTraits": [
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "systemrequired"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Organization "
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the organization with which the article comment is associated."
]
]
}
}
]
}
],
"sourceName": "organizationid",
"sourceOrdering": 14,
"displayName": "Organization ",
"description": "Unique identifier of the organization with which the article comment is associated."
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'User' adds the 'createdOnBehalfBy' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "createdOnBehalfBy",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Created By (Delegate)"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the delegate user who created the kbarticlecomment."
]
]
}
}
]
}
],
"sourceName": "createdonbehalfby",
"sourceOrdering": 17,
"isNullable": true,
"displayName": "Created By (Delegate)",
"description": "Unique identifier of the delegate user who created the kbarticlecomment."
}
}
]
}
]
},
"entity": {
"entityReference": "User",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"User/(resolvedAttributes)/systemUserId"
]
}
]
}
},
{
"relationship": {
"relationshipReference": "referencesA",
"appliedTraits": [
{
"traitReference": "referencesA/exhibitsTraits/does.referenceEntity",
"arguments": [
{
"explanation": "This 'referencesA' relationship to the entity 'User' adds the 'modifiedOnBehalfBy' attribute below to the 'ArticleComment' entity as a key",
"name": "addedAttribute",
"value": {
"name": "modifiedOnBehalfBy",
"relationship": "hasA",
"dataType": "entityId",
"appliedTraits": [
{
"traitReference": "is.CDS.lookup",
"arguments": [
{
"name": "style",
"value": "single"
}
]
},
{
"traitReference": "is.requiredAtLevel",
"arguments": [
{
"name": "level",
"value": "none"
}
]
},
{
"traitReference": "is.localized.displayedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Modified By (Delegate)"
]
]
}
}
]
},
{
"traitReference": "is.localized.describedAs",
"arguments": [
{
"entityReference": {
"entityShape": "localizedTable",
"constantValues": [
[
"en",
"Unique identifier of the delegate user who last modified the kbarticlecomment."
]
]
}
}
]
}
],
"sourceName": "modifiedonbehalfby",
"sourceOrdering": 21,
"isNullable": true,
"displayName": "Modified By (Delegate)",
"description": "Unique identifier of the delegate user who last modified the kbarticlecomment."
}
}
]
}
]
},
"entity": {
"entityReference": "User",
"appliedTraits": [
{
"traitReference": "is.identifiedBy",
"arguments": [
"User/(resolvedAttributes)/systemUserId"
]
}
]
}
}
]
}
}
]
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,244 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "ArticleTemplate",
"description": "Template for a knowledge base article that contains the standard attributes of an article.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/ArticleTemplate.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "kbArticleTemplateId",
"description": "Unique identifier of the knowledge base article template.",
"sourceColumnName": "kbarticletemplateid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "structureXml",
"description": "XML structure of the knowledge base article.",
"sourceColumnName": "structurexml",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "organizationId",
"description": "Unique identifier of the organization associated with the template.",
"sourceColumnName": "organizationid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "formatXml",
"description": "XML format of the knowledge base article template.",
"sourceColumnName": "formatxml",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "title",
"description": "Title of the knowledge base article template.",
"sourceColumnName": "title",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Description of the knowledge base article template.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isActive",
"description": "Information about whether the knowledge base article is active.",
"sourceColumnName": "isactive",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Unique identifier of the user who created the knowledge base article template.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Unique identifier of the user who last modified the knowledge base article template.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Date and time when the knowledge base article template was created.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "modifiedOn",
"description": "Date and time when the knowledge base article template was last modified.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "languageCode",
"description": "Language of the Article Template",
"sourceColumnName": "languagecode",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "kbArticleTemplateIdUnique",
"description": "For internal use only.",
"sourceColumnName": "kbarticletemplateidunique",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "componentState",
"description": "For internal use only.",
"sourceColumnName": "componentstate",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "componentState_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "solutionId",
"description": "Unique identifier of the associated solution.",
"sourceColumnName": "solutionid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "overwriteTime",
"description": "For internal use only.",
"sourceColumnName": "overwritetime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Unique identifier of the delegate user who created the kbarticletemplate.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Unique identifier of the delegate user who last modified the kbarticletemplate.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isManaged",
"sourceColumnName": "ismanaged",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "isCustomizable",
"description": "Information that specifies whether this component can be customized.",
"sourceColumnName": "iscustomizable",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "introducedVersion",
"description": "Version in which the form is introduced.",
"sourceColumnName": "introducedversion",
"dataType": "string",
"dataCategory": "Measurement.Version"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleTemplate",
"attributeName": "organizationId"
},
"toAttribute": {
"entityName": "Organization",
"attributeName": "organizationId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleTemplate",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleTemplate",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleTemplate",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ArticleTemplate",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,86 +0,0 @@
{
"jsonSchemaSemanticVersion": "0.5.0",
"entity": {
"semanticDomain": {
"class": {
"type": "Attachment",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "eb3f0c87-2855-74be-b34b-3f5c248d1004"
}
},
"description": "Attachment for an email activity.",
"displayName": "Attachment",
"attributes": [
{
"name": "attachmentid",
"dataType": "Guid",
"displayName": "Attachment",
"description": "Unique identifier of the attachment.",
"semanticDomain": {
"semanticType": "Object.Identity.UniqueIdentifer",
"isPrimaryKey": true
}
},
{
"name": "body",
"dataType": "String",
"displayName": "Body",
"description": "Contents of the attachment.",
"semanticDomain": {
"semanticType": "internalextentdata",
"maxLength": 1073741823
}
},
{
"name": "subject",
"dataType": "String",
"displayName": "Subject",
"description": "Subject associated with the attachment.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 2000
}
},
{
"name": "filesize",
"dataType": "Int32",
"displayName": "File Size (Bytes)",
"description": "File size of the attachment.",
"semanticDomain": {
"minValue": 0,
"maxValue": 1000000000
}
},
{
"name": "mimetype",
"dataType": "String",
"displayName": "MIME Type",
"description": "MIME type of the attachment.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 256
}
},
{
"name": "filename",
"dataType": "String",
"displayName": "File Name",
"description": "File name of the attachment.",
"semanticDomain": {
"semanticType": "Object.Identity.Name",
"maxLength": 255
}
},
{
"name": "versionnumber",
"dataType": "Int64",
"displayName": "Version Number",
"description": "Version number of the attachment.",
"semanticDomain": {
}
}
]
}
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,633 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "BusinessUnit",
"description": "Business, division, or department in the Microsoft Dynamics 365 database.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/BusinessUnit.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "businessUnitId",
"description": "Unique identifier of the business unit.",
"sourceColumnName": "businessunitid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "organizationId",
"description": "Unique identifier of the organization associated with the business unit.",
"sourceColumnName": "organizationid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "name",
"description": "Name of the business unit.",
"sourceColumnName": "name",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Description of the business unit.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "divisionName",
"description": "Name of the division to which the business unit belongs.",
"sourceColumnName": "divisionname",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "fileAsName",
"description": "Alternative name under which the business unit can be filed.",
"sourceColumnName": "fileasname",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "tickerSymbol",
"description": "Stock exchange ticker symbol for the business unit.",
"sourceColumnName": "tickersymbol",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stockExchange",
"description": "Stock exchange on which the business is listed.",
"sourceColumnName": "stockexchange",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "UTCOffset",
"description": "UTC offset for the business unit. This is the difference between local time and standard Coordinated Universal Time.",
"sourceColumnName": "utcoffset",
"dataType": "string",
"dataCategory": "Location.Timezone"
},
{
"name": "createdOn",
"description": "Date and time when the business unit was created.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "modifiedOn",
"description": "Date and time when the business unit was last modified.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "creditLimit",
"description": "Credit limit for the business unit.",
"sourceColumnName": "creditlimit",
"dataType": "double",
"dataCategory": "Uncategorized"
},
{
"name": "costCenter",
"description": "Name of the business unit cost center.",
"sourceColumnName": "costcenter",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "webSiteUrl",
"description": "Website URL for the business unit.",
"sourceColumnName": "websiteurl",
"dataType": "string",
"dataCategory": "Reference.URL"
},
{
"name": "ftpSiteUrl",
"description": "FTP site URL for the business unit.",
"sourceColumnName": "ftpsiteurl",
"dataType": "string",
"dataCategory": "Reference.URL"
},
{
"name": "EMailAddress",
"description": "Email address for the business unit.",
"sourceColumnName": "emailaddress",
"dataType": "string",
"dataCategory": "Identity.Service.Email"
},
{
"name": "inheritanceMask",
"description": "Inheritance mask for the business unit.",
"sourceColumnName": "inheritancemask",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Unique identifier of the user who created the business unit.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Unique identifier of the user who last modified the business unit.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "workflowSuspended",
"description": "Information about whether workflow or sales process rules have been suspended.",
"sourceColumnName": "workflowsuspended",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "parentBusinessUnitId",
"description": "Unique identifier for the parent business unit.",
"sourceColumnName": "parentbusinessunitid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isDisabled",
"description": "Information about whether the business unit is enabled or disabled.",
"sourceColumnName": "isdisabled",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "disabledReason",
"description": "Reason for disabling the business unit.",
"sourceColumnName": "disabledreason",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"description": "Version number of the business unit.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "address1AddressId",
"description": "Unique identifier for address 1.",
"sourceColumnName": "address1_addressid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address1AddressTypeCode",
"description": "Type of address for address 1, such as billing, shipping, or primary address.",
"sourceColumnName": "address1_addresstypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "address1AddressTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address1Name",
"description": "Name to enter for address 1.",
"sourceColumnName": "address1_name",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address1Line1",
"description": "First line for entering address 1 information.",
"sourceColumnName": "address1_line1",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address1Line2",
"description": "Second line for entering address 1 information.",
"sourceColumnName": "address1_line2",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address1Line3",
"description": "Third line for entering address 1 information.",
"sourceColumnName": "address1_line3",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address1City",
"description": "City name for address 1.",
"sourceColumnName": "address1_city",
"dataType": "string",
"dataCategory": "Location.City"
},
{
"name": "address1StateOrProvince",
"description": "State or province for address 1.",
"sourceColumnName": "address1_stateorprovince",
"dataType": "string",
"dataCategory": "Location.State"
},
{
"name": "address1County",
"description": "County name for address 1.",
"sourceColumnName": "address1_county",
"dataType": "string",
"dataCategory": "Location.County"
},
{
"name": "address1Country",
"description": "Country/region name for address 1.",
"sourceColumnName": "address1_country",
"dataType": "string",
"dataCategory": "Location.Country"
},
{
"name": "address1PostOfficeBox",
"description": "Post office box number for address 1.",
"sourceColumnName": "address1_postofficebox",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address1PostalCode",
"description": "ZIP Code or postal code for address 1.",
"sourceColumnName": "address1_postalcode",
"dataType": "string",
"dataCategory": "Location.PostalCode"
},
{
"name": "address1UTCOffset",
"description": "UTC offset for address 1. This is the difference between local time and standard Coordinated Universal Time.",
"sourceColumnName": "address1_utcoffset",
"dataType": "string",
"dataCategory": "Location.Timezone"
},
{
"name": "address1UPSZone",
"description": "United Parcel Service (UPS) zone for address 1.",
"sourceColumnName": "address1_upszone",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address1Latitude",
"description": "Latitude for address 1.",
"sourceColumnName": "address1_latitude",
"dataType": "double",
"dataCategory": "Location.Latitude"
},
{
"name": "address1Telephone1",
"description": "First telephone number associated with address 1.",
"sourceColumnName": "address1_telephone1",
"dataType": "string",
"dataCategory": "Identity.Service.Phone"
},
{
"name": "address1Longitude",
"description": "Longitude for address 1.",
"sourceColumnName": "address1_longitude",
"dataType": "double",
"dataCategory": "Location.Longitude"
},
{
"name": "address1ShippingMethodCode",
"description": "Method of shipment for address 1.",
"sourceColumnName": "address1_shippingmethodcode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "address1ShippingMethodCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address1Telephone2",
"description": "Second telephone number associated with address 1.",
"sourceColumnName": "address1_telephone2",
"dataType": "string",
"dataCategory": "Identity.Service.Phone"
},
{
"name": "address1Telephone3",
"description": "Third telephone number associated with address 1.",
"sourceColumnName": "address1_telephone3",
"dataType": "string",
"dataCategory": "Identity.Service.Phone"
},
{
"name": "address1Fax",
"description": "Fax number for address 1.",
"sourceColumnName": "address1_fax",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2AddressId",
"description": "Unique identifier for address 2.",
"sourceColumnName": "address2_addressid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2AddressTypeCode",
"description": "Type of address for address 2, such as billing, shipping, or primary address.",
"sourceColumnName": "address2_addresstypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "address2AddressTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2Name",
"description": "Name to enter for address 2.",
"sourceColumnName": "address2_name",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2Line1",
"description": "First line for entering address 2 information.",
"sourceColumnName": "address2_line1",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2Line2",
"description": "Second line for entering address 2 information.",
"sourceColumnName": "address2_line2",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2Line3",
"description": "Third line for entering address 2 information.",
"sourceColumnName": "address2_line3",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2City",
"description": "City name for address 2.",
"sourceColumnName": "address2_city",
"dataType": "string",
"dataCategory": "Location.City"
},
{
"name": "address2StateOrProvince",
"description": "State or province for address 2.",
"sourceColumnName": "address2_stateorprovince",
"dataType": "string",
"dataCategory": "Location.State"
},
{
"name": "address2County",
"description": "County name for address 2.",
"sourceColumnName": "address2_county",
"dataType": "string",
"dataCategory": "Location.County"
},
{
"name": "address2Country",
"description": "Country/region name for address 2.",
"sourceColumnName": "address2_country",
"dataType": "string",
"dataCategory": "Location.Country"
},
{
"name": "address2PostOfficeBox",
"description": "Post office box number for address 2.",
"sourceColumnName": "address2_postofficebox",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2PostalCode",
"description": "ZIP Code or postal code for address 2.",
"sourceColumnName": "address2_postalcode",
"dataType": "string",
"dataCategory": "Location.PostalCode"
},
{
"name": "address2UTCOffset",
"description": "UTC offset for address 2. This is the difference between local time and standard Coordinated Universal Time.",
"sourceColumnName": "address2_utcoffset",
"dataType": "string",
"dataCategory": "Location.Timezone"
},
{
"name": "address2UPSZone",
"description": "United Parcel Service (UPS) zone for address 2.",
"sourceColumnName": "address2_upszone",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2Latitude",
"description": "Latitude for address 2.",
"sourceColumnName": "address2_latitude",
"dataType": "double",
"dataCategory": "Location.Latitude"
},
{
"name": "address2Telephone1",
"description": "First telephone number associated with address 2.",
"sourceColumnName": "address2_telephone1",
"dataType": "string",
"dataCategory": "Identity.Service.Phone"
},
{
"name": "address2Longitude",
"description": "Longitude for address 2.",
"sourceColumnName": "address2_longitude",
"dataType": "double",
"dataCategory": "Location.Longitude"
},
{
"name": "address2ShippingMethodCode",
"description": "Method of shipment for address 2.",
"sourceColumnName": "address2_shippingmethodcode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "address2ShippingMethodCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "address2Telephone2",
"description": "Second telephone number associated with address 2.",
"sourceColumnName": "address2_telephone2",
"dataType": "string",
"dataCategory": "Identity.Service.Phone"
},
{
"name": "address2Telephone3",
"description": "Third telephone number associated with address 2.",
"sourceColumnName": "address2_telephone3",
"dataType": "string",
"dataCategory": "Identity.Service.Phone"
},
{
"name": "address2Fax",
"description": "Fax number for address 2.",
"sourceColumnName": "address2_fax",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "picture",
"description": "Picture or diagram of the business unit.",
"sourceColumnName": "picture",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "calendarId",
"description": "Fiscal calendar associated with the business unit.",
"sourceColumnName": "calendarid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Unique identifier of the delegate user who created the businessunit.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Unique identifier of the delegate user who last modified the businessunit.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "transactionCurrencyId",
"description": "Unique identifier of the currency associated with the businessunit.",
"sourceColumnName": "transactioncurrencyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeRate",
"description": "Exchange rate for the currency associated with the businessunit with respect to the base currency.",
"sourceColumnName": "exchangerate",
"dataType": "decimal",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "BusinessUnit",
"attributeName": "organizationId"
},
"toAttribute": {
"entityName": "Organization",
"attributeName": "organizationId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "BusinessUnit",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "BusinessUnit",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "BusinessUnit",
"attributeName": "parentBusinessUnitId"
},
"toAttribute": {
"entityName": "BusinessUnit",
"attributeName": "businessUnitId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "BusinessUnit",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "BusinessUnit",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "BusinessUnit",
"attributeName": "transactionCurrencyId"
},
"toAttribute": {
"entityName": "Currency",
"attributeName": "transactionCurrencyId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,794 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "Connection",
"description": "Relationship between two entities.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/Connection.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "modifiedBy",
"description": "Shows who last updated the record.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningUser",
"description": "Unique identifier of the user who owns the connection.",
"sourceColumnName": "owninguser",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode",
"description": "Reason for the status of the connection.",
"sourceColumnName": "statuscode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "connectionId",
"description": "Unique identifier of the connection.",
"sourceColumnName": "connectionid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"description": "Version number of the connection.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "effectiveStart",
"description": "Enter the start date of the connection.",
"sourceColumnName": "effectivestart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "isMaster",
"description": "Indicates that this is the master record.",
"sourceColumnName": "ismaster",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "ownerId",
"description": "Enter the user or team who is assigned to manage the record. This field is updated every time the record is assigned to a different user.",
"sourceColumnName": "ownerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "relatedConnectionId",
"description": "Unique identifier for the reciprocal connection record.",
"sourceColumnName": "relatedconnectionid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Type additional information to describe the connection, such as the length or quality of the relationship.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningBusinessUnit",
"description": "Shows the business unit that the record owner belongs to.",
"sourceColumnName": "owningbusinessunit",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "record2Id",
"description": "Unique identifier of the target record.",
"sourceColumnName": "record2id",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Shows who created the record.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "record2RoleId",
"description": "Choose the secondary party's role or relationship with the primary party.",
"sourceColumnName": "record2roleid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "effectiveEnd",
"description": "Enter the end date of the connection.",
"sourceColumnName": "effectiveend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "record1RoleId",
"description": "Choose the primary party's role or relationship with the second party.",
"sourceColumnName": "record1roleid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "modifiedOn",
"description": "Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "record1Id",
"description": "Unique identifier of the source record.",
"sourceColumnName": "record1id",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode",
"description": "Shows whether the connection is active or inactive. Inactive connections are read-only and can't be edited unless they are reactivated.",
"sourceColumnName": "statecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Shows who last updated the record on behalf of another user.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Shows who created the record on behalf of another user.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningTeam",
"description": "Unique identifier of the team who owns the connection.",
"sourceColumnName": "owningteam",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "transactionCurrencyId",
"description": "Choose the local currency for the record to make sure budgets are reported in the correct currency.",
"sourceColumnName": "transactioncurrencyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeRate",
"description": "Shows the conversion rate of the record's currency. The exchange rate is used to convert all money fields in the record from the local currency to the system's default currency.",
"sourceColumnName": "exchangerate",
"dataType": "decimal",
"dataCategory": "Uncategorized"
},
{
"name": "record2ObjectTypeCode",
"description": "Shows the record type of the target record.",
"sourceColumnName": "record2objecttypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "record2ObjectTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "record1ObjectTypeCode",
"description": "Shows the record type of the source record.",
"sourceColumnName": "record1objecttypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "record1ObjectTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "name",
"description": "Name of the connection.",
"sourceColumnName": "name",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "entityImageId",
"description": "For internal use only.",
"sourceColumnName": "entityimageid",
"dataType": "string",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "relatedConnectionId"
},
"toAttribute": {
"entityName": "Connection",
"attributeName": "connectionId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "owningBusinessUnit"
},
"toAttribute": {
"entityName": "BusinessUnit",
"attributeName": "businessUnitId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "SocialProfile",
"attributeName": "socialProfileId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Goal",
"attributeName": "goalId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Activity",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Appointment",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Email",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "KnowledgeArticle",
"attributeName": "knowledgearticleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "SocialActivity",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "RecurringAppointment",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "PhoneCall",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Letter",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "KnowledgeBaseRecord",
"attributeName": "knowledgeBaseRecordId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Task",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Position",
"attributeName": "positionId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "Fax",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2Id"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record2RoleId"
},
"toAttribute": {
"entityName": "ConnectionRole",
"attributeName": "connectionRoleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1RoleId"
},
"toAttribute": {
"entityName": "ConnectionRole",
"attributeName": "connectionRoleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "KnowledgeArticle",
"attributeName": "knowledgearticleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Letter",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Activity",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Goal",
"attributeName": "goalId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "SocialProfile",
"attributeName": "socialProfileId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "PhoneCall",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Fax",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "RecurringAppointment",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Task",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "SocialActivity",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "KnowledgeBaseRecord",
"attributeName": "knowledgeBaseRecordId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Position",
"attributeName": "positionId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Appointment",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "Email",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "record1Id"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Connection",
"attributeName": "transactionCurrencyId"
},
"toAttribute": {
"entityName": "Currency",
"attributeName": "transactionCurrencyId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,247 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "ConnectionRole",
"description": "Role describing a relationship between a two records.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/ConnectionRole.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "connectionRoleId",
"description": "Unique identifier of the connection role.",
"sourceColumnName": "connectionroleid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Unique identifier of the user who last modified the connection role.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Date and time when the connection role was last modified.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "name",
"description": "Name of the connection role.",
"sourceColumnName": "name",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode",
"description": "Status of the connection role.",
"sourceColumnName": "statecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode",
"description": "Reason for the status of the connection role.",
"sourceColumnName": "statuscode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Unique identifier of the user who created the relationship role.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "category",
"description": "Categories for connection roles.",
"sourceColumnName": "category",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "category_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "organizationId",
"description": "Unique identifier of the organization that this connection role belongs to.",
"sourceColumnName": "organizationid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Description of the connection role.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Date and time when the connection role was created.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "versionNumber",
"description": "Version number of the connection role.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "solutionId",
"description": "Unique identifier of the associated solution.",
"sourceColumnName": "solutionid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "componentState",
"description": "State of the component.",
"sourceColumnName": "componentstate",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "componentState_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "overwriteTime",
"description": "Date and time when the record was last overwritten.",
"sourceColumnName": "overwritetime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "connectionRoleIdUnique",
"description": "Unique identifier of the published or unpublished connection role record.",
"sourceColumnName": "connectionroleidunique",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Unique identifier of the delegate user who modified the relationship role.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Unique identifier of the delegate user who created the relationship role.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isManaged",
"description": "Indicates whether the solution component is part of a managed solution.",
"sourceColumnName": "ismanaged",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "isCustomizable",
"description": "Information that specifies whether this component can be customized.",
"sourceColumnName": "iscustomizable",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "introducedVersion",
"description": "Version in which the form is introduced.",
"sourceColumnName": "introducedversion",
"dataType": "string",
"dataCategory": "Measurement.Version"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ConnectionRole",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ConnectionRole",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ConnectionRole",
"attributeName": "organizationId"
},
"toAttribute": {
"entityName": "Organization",
"attributeName": "organizationId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ConnectionRole",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "ConnectionRole",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,216 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "Currency",
"description": "Currency in which a financial transaction is carried out.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/Currency.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "statusCode",
"description": "Reason for the status of the transaction currency.",
"sourceColumnName": "statuscode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Date and time when the transaction currency was last modified.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "stateCode",
"description": "Status of the transaction currency.",
"sourceColumnName": "statecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"description": "Version number of the transaction currency.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Unique identifier of the user who last modified the transaction currency.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "createdOn",
"description": "Date and time when the transaction currency was created.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "transactionCurrencyId",
"description": "Unique identifier of the transaction currency.",
"sourceColumnName": "transactioncurrencyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeRate",
"description": "Exchange rate between the transaction currency and the base currency.",
"sourceColumnName": "exchangerate",
"dataType": "decimal",
"dataCategory": "Uncategorized"
},
{
"name": "currencySymbol",
"description": "Symbol for the transaction currency.",
"sourceColumnName": "currencysymbol",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "currencyName",
"description": "Name of the transaction currency.",
"sourceColumnName": "currencyname",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Unique identifier of the user who created the transaction currency.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "ISOCurrencyCode",
"description": "ISO currency code for the transaction currency.",
"sourceColumnName": "isocurrencycode",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "organizationId",
"description": "Unique identifier of the organization associated with the transaction currency.",
"sourceColumnName": "organizationid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "currencyPrecision",
"description": "Number of decimal places that can be used for currency.",
"sourceColumnName": "currencyprecision",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Unique identifier of the delegate user who created the transactioncurrency.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Unique identifier of the delegate user who last modified the transactioncurrency.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "entityImageId",
"description": "For internal use only.",
"sourceColumnName": "entityimageid",
"dataType": "string",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Currency",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Currency",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Currency",
"attributeName": "organizationId"
},
"toAttribute": {
"entityName": "Organization",
"attributeName": "organizationId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Currency",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Currency",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,712 +0,0 @@
{
"jsonSchemaSemanticVersion": "0.5.0",
"entity": {
"semanticDomain": {
"class": {
"type": "CustomerAddress",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "3cdf0602-7f65-91af-a7ff-a79a11cae699"
}
},
"description": "Address and shipping information. Used to store additional addresses for an account or contact.",
"displayName": "Address",
"attributes": [
{
"name": "parentid",
"dataType": "Guid",
"displayName": "Parent",
"description": "Choose the customer's address.",
"semanticDomain": {
"semanticType": "Object.Relationship.Parent"
}
},
{
"name": "customeraddressid",
"dataType": "Guid",
"displayName": "Address",
"description": "Unique identifier of the customer address.",
"semanticDomain": {
"semanticType": "Object.Identity.UniqueIdentifer",
"isPrimaryKey": true
}
},
{
"name": "addressnumber",
"dataType": "Int32",
"displayName": "Address Number",
"description": "Shows the number of the address, to indicate whether the address is the primary, secondary, or other address for the customer.",
"semanticDomain": {
"minValue": 0,
"maxValue": 1000000000
}
},
{
"name": "objecttypecode_display",
"dataType": "String",
"semanticDomain": {
"semanticType": "Measurement.OptionCode.Display",
"inSupportOf": "objecttypecode",
"isReadOnly": true
}
},
{
"name": "objecttypecode",
"dataType": "String",
"displayName": "Object Type ",
"description": "Shows the type code of the customer record to indicate whether the address belongs to a customer account or contact.",
"semanticDomain": {
"semanticType": "Measurement.OptionCode",
"constrainedList": {
"name": "customeraddress_objecttypecode",
"displayName": "Object Type ",
"description": "Type of entity with which the customer address is associated.",
"items": [
{
"value": 1,
"displayName": "Account"
},
{
"value": 2,
"displayName": "Contact"
}
]
}
}
},
{
"name": "addresstypecode_display",
"dataType": "String",
"semanticDomain": {
"semanticType": "Measurement.OptionCode.Display",
"inSupportOf": "addresstypecode",
"isReadOnly": true
}
},
{
"name": "addresstypecode",
"dataType": "String",
"displayName": "Address Type",
"description": "Select the address type, such as primary or billing.",
"semanticDomain": {
"semanticType": "Measurement.OptionCode",
"constrainedList": {
"name": "customeraddress_addresstypecode",
"displayName": "Address Type",
"description": "Type of address for the customer, such as billing, shipping, or primary address.",
"items": [
{
"value": 1,
"displayName": "Bill To"
},
{
"value": 2,
"displayName": "Ship To"
},
{
"value": 3,
"displayName": "Primary"
},
{
"value": 4,
"displayName": "Other"
}
]
}
}
},
{
"name": "name",
"dataType": "String",
"displayName": "Address Name",
"description": "Type a descriptive name for the customer's address, such as Corporate Headquarters.",
"semanticDomain": {
"semanticType": "Object.Identity.Name",
"maxLength": 200
}
},
{
"name": "primarycontactname",
"dataType": "String",
"displayName": "Address Contact",
"description": "Type the name of the primary contact person for the customer's address.",
"semanticDomain": {
"semanticType": "Object.Identity.Name",
"maxLength": 150
}
},
{
"name": "line1",
"dataType": "String",
"displayName": "Street 1",
"description": "Type the first line of the customer's address to help identify the location.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 250
}
},
{
"name": "line2",
"dataType": "String",
"displayName": "Street 2",
"description": "Type the second line of the customer's address.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 250
}
},
{
"name": "line3",
"dataType": "String",
"displayName": "Street 3",
"description": "Type the third line of the customer's address.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 250
}
},
{
"name": "city",
"dataType": "String",
"displayName": "City",
"description": "Type the city for the customer's address to help identify the location.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 80
}
},
{
"name": "stateorprovince",
"dataType": "String",
"displayName": "State/Province",
"description": "Type the state or province of the customer's address.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 50
}
},
{
"name": "county",
"dataType": "String",
"displayName": "County",
"description": "Type the county for the customer's address.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 50
}
},
{
"name": "country",
"dataType": "String",
"displayName": "Country/Region",
"description": "Type the country or region for the customer's address.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 80
}
},
{
"name": "postofficebox",
"dataType": "String",
"displayName": "Post Office Box",
"description": "Type the post office box number of the customer's address.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 20
}
},
{
"name": "postalcode",
"dataType": "String",
"displayName": "ZIP/Postal Code",
"description": "Type the ZIP Code or postal code for the address.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 20
}
},
{
"name": "utcoffset",
"dataType": "Int32",
"displayName": "UTC Offset",
"description": "Select the time zone for the address.",
"semanticDomain": {
"semanticType": "Location.Timezone",
"minValue": -1500,
"maxValue": 1500
}
},
{
"name": "freighttermscode_display",
"dataType": "String",
"semanticDomain": {
"semanticType": "Measurement.OptionCode.Display",
"inSupportOf": "freighttermscode",
"isReadOnly": true
}
},
{
"name": "freighttermscode",
"dataType": "String",
"displayName": "Freight Terms",
"description": "Select the freight terms to make sure shipping charges are processed correctly.",
"semanticDomain": {
"semanticType": "Measurement.OptionCode",
"constrainedList": {
"name": "customeraddress_freighttermscode",
"displayName": "Freight Terms",
"description": "Freight terms for the customer address.",
"items": [
{
"value": 1,
"displayName": "FOB"
},
{
"value": 2,
"displayName": "No Charge"
}
]
}
}
},
{
"name": "upszone",
"dataType": "String",
"displayName": "UPS Zone",
"description": "Type the UPS zone of the customer's address to make sure shipping charges are calculated correctly and deliveries are made promptly, if shipped by UPS.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 4
}
},
{
"name": "latitude",
"dataType": "Double",
"displayName": "Latitude",
"description": "Type the latitude value for the customer's address, for use in mapping and other applications.",
"semanticDomain": {
"minValue": -90,
"maxValue": 90
}
},
{
"name": "telephone1",
"dataType": "String",
"displayName": "Main Phone",
"description": "Type the primary phone number for the customer's address.",
"semanticDomain": {
"semanticType": "Object.Identity.Service.Phone",
"maxLength": 50
}
},
{
"name": "longitude",
"dataType": "Double",
"displayName": "Longitude",
"description": "Type the longitude value for the customer's address, for use in mapping and other applications.",
"semanticDomain": {
"minValue": -180,
"maxValue": 180
}
},
{
"name": "shippingmethodcode_display",
"dataType": "String",
"semanticDomain": {
"semanticType": "Measurement.OptionCode.Display",
"inSupportOf": "shippingmethodcode",
"isReadOnly": true
}
},
{
"name": "shippingmethodcode",
"dataType": "String",
"displayName": "Shipping Method",
"description": "Select a shipping method for deliveries sent to this address.",
"semanticDomain": {
"semanticType": "Measurement.OptionCode",
"constrainedList": {
"name": "customeraddress_shippingmethodcode",
"displayName": "Shipping Method",
"description": "Method of shipment for the customer address.",
"items": [
{
"value": 1,
"displayName": "Airborne"
},
{
"value": 2,
"displayName": "DHL"
},
{
"value": 3,
"displayName": "FedEx"
},
{
"value": 4,
"displayName": "UPS"
},
{
"value": 5,
"displayName": "Postal Mail"
},
{
"value": 6,
"displayName": "Full Load"
},
{
"value": 7,
"displayName": "Will Call"
}
]
}
}
},
{
"name": "telephone2",
"dataType": "String",
"displayName": "Phone 2",
"description": "Type a second phone number for the customer's address.",
"semanticDomain": {
"semanticType": "Object.Identity.Service.Phone",
"maxLength": 50
}
},
{
"name": "telephone3",
"dataType": "String",
"displayName": "Telephone 3",
"description": "Type a third phone number for the customer's address.",
"semanticDomain": {
"semanticType": "Object.Identity.Service.Phone",
"maxLength": 50
}
},
{
"name": "fax",
"dataType": "String",
"displayName": "Fax",
"description": "Type the fax number associated with the customer's address.",
"semanticDomain": {
"semanticType": "text",
"maxLength": 50
}
},
{
"name": "versionnumber",
"dataType": "Int64",
"displayName": "Version Number",
"description": "Version number of the customer address.",
"semanticDomain": {
}
},
{
"name": "createdby",
"dataType": "Guid",
"displayName": "Created By",
"description": "Shows who created the record.",
"semanticDomain": {
}
},
{
"name": "createdon",
"dataType": "DateTimeOffset",
"displayName": "Created On",
"description": "Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"semanticDomain": {
"semanticType": "Measurement.Date.Creation"
}
},
{
"name": "modifiedby",
"dataType": "Guid",
"displayName": "Modified By",
"description": "Shows who last updated the record.",
"semanticDomain": {
}
},
{
"name": "modifiedon",
"dataType": "DateTimeOffset",
"displayName": "Modified On",
"description": "Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"semanticDomain": {
"semanticType": "Measurement.Date.Modify"
}
},
{
"name": "owningbusinessunit",
"dataType": "Guid",
"displayName": "Owning Business Unit",
"description": "Shows the business unit that the record owner belongs to.",
"semanticDomain": {
}
},
{
"name": "owninguser",
"dataType": "Guid",
"displayName": "Owner",
"description": "Unique identifier of the user who owns the customer address.",
"semanticDomain": {
}
},
{
"name": "timezoneruleversionnumber",
"dataType": "Int32",
"displayName": "Time Zone Rule Version Number",
"description": "For internal use only.",
"semanticDomain": {
"minValue": -1,
"maxValue": 2147483647
}
},
{
"name": "overriddencreatedon",
"dataType": "DateTimeOffset",
"displayName": "Record Created On",
"description": "Date and time that the record was migrated.",
"semanticDomain": {
"semanticType": "Measurement.Date.Creation"
}
},
{
"name": "utcconversiontimezonecode",
"dataType": "Int32",
"displayName": "UTC Conversion Time Zone Code",
"description": "Time zone code that was in use when the record was created.",
"semanticDomain": {
"minValue": -1,
"maxValue": 2147483647
}
},
{
"name": "importsequencenumber",
"dataType": "Int32",
"displayName": "Import Sequence Number",
"description": "Unique identifier of the data import or data migration that created this record.",
"semanticDomain": {
"minValue": -2147483648,
"maxValue": 2147483647
}
},
{
"name": "ownerid",
"dataType": "Guid",
"displayName": "Owner",
"description": "Enter the user or team who is assigned to manage the record. This field is updated every time the record is assigned to a different user.",
"semanticDomain": {
}
},
{
"name": "createdonbehalfby",
"dataType": "Guid",
"displayName": "Created By (Delegate)",
"description": "Shows who created the record on behalf of another user.",
"semanticDomain": {
}
},
{
"name": "modifiedonbehalfby",
"dataType": "Guid",
"displayName": "Modified By (Delegate)",
"description": "Shows who last updated the record on behalf of another user.",
"semanticDomain": {
}
},
{
"name": "transactioncurrencyid",
"dataType": "Guid",
"displayName": "Currency",
"description": "Choose the local currency for the record to make sure budgets are reported in the correct currency.",
"semanticDomain": {
"semanticType": "Measurement.Currency.Type"
}
},
{
"name": "exchangerate",
"dataType": "Decimal",
"displayName": "Exchange Rate",
"description": "Shows the conversion rate of the record's currency. The exchange rate is used to convert all money fields in the record from the local currency to the system's default currency.",
"semanticDomain": {
"minValue": 1E-10,
"maxValue": 100000000000
}
},
{
"name": "composite",
"dataType": "String",
"displayName": "Address",
"description": "Shows the complete address.",
"semanticDomain": {
"semanticType": "Reference.Description",
"maxLength": 1000
}
}
]
},
"relationships": [
{
"name": "implicit_user",
"referencing": {
"entity": {
"type": "CustomerAddress",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "3cdf0602-7f65-91af-a7ff-a79a11cae699"
},
"attributes": [
{
"name": "ownerid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "SystemUser",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "d3b9b209-0928-f247-03da-7c3fac836476"
},
"attributes": [
{
"name": "systemuserid",
"comparisonOrder": 0
}
]
}
},
{
"name": "implicit_team",
"referencing": {
"entity": {
"type": "CustomerAddress",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "3cdf0602-7f65-91af-a7ff-a79a11cae699"
},
"attributes": [
{
"name": "ownerid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Team",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "e2069f47-358d-adfd-cf3e-0f0b0bda674d"
},
"attributes": [
{
"name": "teamid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Account_CustomerAddress",
"referencing": {
"entity": {
"type": "CustomerAddress",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "3cdf0602-7f65-91af-a7ff-a79a11cae699"
},
"attributes": [
{
"name": "parentid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Account",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "07f94632-fb5e-f556-52bf-e5d7d4060d1e"
},
"attributes": [
{
"name": "accountid",
"comparisonOrder": 0
}
]
}
},
{
"name": "Contact_CustomerAddress",
"referencing": {
"entity": {
"type": "CustomerAddress",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "3cdf0602-7f65-91af-a7ff-a79a11cae699"
},
"attributes": [
{
"name": "parentid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "Contact",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "0ed5931f-678a-d8b1-5383-3e7ea104bb3c"
},
"attributes": [
{
"name": "contactid",
"comparisonOrder": 0
}
]
}
},
{
"name": "TransactionCurrency_CustomerAddress",
"referencing": {
"entity": {
"type": "CustomerAddress",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "3cdf0602-7f65-91af-a7ff-a79a11cae699"
},
"attributes": [
{
"name": "transactioncurrencyid",
"comparisonOrder": 0
}
]
},
"referenced": {
"entity": {
"type": "TransactionCurrency",
"namespace": "core.applicationCommon",
"semanticVersion": "0.5.0",
"semanticId": "20d70d8a-8db7-a962-9131-811acfd0a332"
},
"attributes": [
{
"name": "transactioncurrencyid",
"comparisonOrder": 0
}
]
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,318 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "CustomerRelationship",
"description": "Relationship between a customer and a partner in which either can be an account or contact.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/CustomerRelationship.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "versionNumber",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Shows the date and time when the customer relationship was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "modifiedOn",
"description": "Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "customerRoleId",
"description": "Choose the primary party's role or nature of the relationship the customer has with the second party. The field is read-only until both parties have been selected. Administrators can configure role values under Business Management in the Settings area.",
"sourceColumnName": "customerroleid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "customerRelationshipId",
"description": "Unique identifier of the customer relationship.",
"sourceColumnName": "customerrelationshipid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Shows who created the record.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "ownerId",
"description": "Enter the user or team who is assigned to manage the record. This field is updated every time the record is assigned to a different user.",
"sourceColumnName": "ownerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "partnerId",
"description": "Select the secondary account or contact involved in the customer relationship.",
"sourceColumnName": "partnerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningBusinessUnit",
"description": "Unique identifier of the business unit that owns the customer relationship.",
"sourceColumnName": "owningbusinessunit",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "converseRelationshipId",
"description": "Unique identifier of the converse relationship of the customer relationship.",
"sourceColumnName": "converserelationshipid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "partnerRoleId",
"description": "Choose the secondary party's role or nature of the relationship the customer has with the primary party. The field is read-only until both parties have been selected. Administrators can configure role values under Business Management in the Settings area.",
"sourceColumnName": "partnerroleid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "customerRoleDescription",
"description": "Type additional information about the primary party's role in the customer relationship, such as the length or quality of the relationship.",
"sourceColumnName": "customerroledescription",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "customerId",
"description": "Select the primary account or contact involved in the customer relationship.",
"sourceColumnName": "customerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Shows who last updated the record.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "partnerRoleDescription",
"description": "Type additional information about the secondary party's role in the customer relationship, such as the length or quality of the relationship.",
"sourceColumnName": "partnerroledescription",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningUser",
"description": "Unique identifier of the user who owns the customer relationship.",
"sourceColumnName": "owninguser",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Shows who created the record on behalf of another user.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Shows who created the record on behalf of another user.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningTeam",
"description": "Unique identifier of the team who owns the customer relationship.",
"sourceColumnName": "owningteam",
"dataType": "string",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "partnerId"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "partnerId"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "owningBusinessUnit"
},
"toAttribute": {
"entityName": "BusinessUnit",
"attributeName": "businessUnitId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "converseRelationshipId"
},
"toAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "customerRelationshipId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "customerId"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "customerId"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "owningUser"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "CustomerRelationship",
"attributeName": "owningTeam"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,953 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "Email",
"description": "Activity that is delivered using email protocols.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/Email.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "scheduledStart",
"description": "Enter the expected start date and time for the activity to provide details about the tentative time when the email activity must be initiated.",
"sourceColumnName": "scheduledstart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode",
"description": "Select the email's status.",
"sourceColumnName": "statuscode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "submittedBy",
"description": "Shows the Microsoft Office Outlook account for the user who submitted the email to Microsoft Dynamics 365.",
"sourceColumnName": "submittedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Type the greeting and message text of the email.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "to",
"description": "Enter the account, contact, lead, queue, or user recipients for the email.",
"sourceColumnName": "to",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isWorkflowCreated",
"description": "Indication if the email was created by a workflow rule.",
"sourceColumnName": "isworkflowcreated",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "activityId",
"description": "Unique identifier of the email activity.",
"sourceColumnName": "activityid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledEnd",
"description": "Enter the expected due date and time for the activity to be completed to provide details about when the email will be sent.",
"sourceColumnName": "scheduledend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "mimeType",
"description": "MIME type of the email message data.",
"sourceColumnName": "mimetype",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Shows who created the record.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"description": "Version number of the email message.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "readReceiptRequested",
"description": "Indicates that a read receipt is requested.",
"sourceColumnName": "readreceiptrequested",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "subcategory",
"description": "Type a subcategory to identify the email type and relate the activity to a specific product, sales region, business group, or other function.",
"sourceColumnName": "subcategory",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isBilled",
"description": "Information regarding whether the email activity was billed as part of resolving a case.",
"sourceColumnName": "isbilled",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "actualDurationMinutes",
"description": "Type the number of minutes spent creating and sending the email. The duration is used in reporting.",
"sourceColumnName": "actualdurationminutes",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "priorityCode",
"description": "Select the priority so that preferred customers or critical issues are handled quickly.",
"sourceColumnName": "prioritycode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "priorityCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Shows who last updated the record.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "actualStart",
"description": "Enter the actual start date and time for the email. By default, it displays the date and time when the activity was created, but can be edited to capture the actual time to create and send the email.",
"sourceColumnName": "actualstart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "from",
"description": "Enter the sender of the email.",
"sourceColumnName": "from",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "directionCode",
"description": "Select the direction of the email as incoming or outbound.",
"sourceColumnName": "directioncode",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "actualEnd",
"description": "Enter the actual end date and time of the email. By default, it displays the date and time when the activity was completed or canceled, but can be edited to capture the actual time to create and send the email.",
"sourceColumnName": "actualend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "trackingToken",
"description": "Shows the tracking token assigned to the email to make sure responses are automatically tracked in Microsoft Dynamics 365.",
"sourceColumnName": "trackingtoken",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledDurationMinutes",
"description": "Scheduled duration of the email activity, specified in minutes.",
"sourceColumnName": "scheduleddurationminutes",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "category",
"description": "Type a category to identify the email type, such as lead outreach, customer follow-up, or service alert, to tie the email to a business group or function.",
"sourceColumnName": "category",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "owningBusinessUnit",
"description": "Unique identifier of the business unit that owns the email activity.",
"sourceColumnName": "owningbusinessunit",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "bcc",
"description": "Enter the recipients that are included on the email distribution, but are not displayed to other recipients.",
"sourceColumnName": "bcc",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "cc",
"description": "Enter the recipients that should be copied on the email.",
"sourceColumnName": "cc",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "sender",
"description": "Sender of the email.",
"sourceColumnName": "sender",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "subject",
"description": "Type a short description about the objective or primary topic of the email.",
"sourceColumnName": "subject",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "toRecipients",
"description": "Shows the email addresses corresponding to the recipients.",
"sourceColumnName": "torecipients",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "deliveryReceiptRequested",
"description": "Select whether the sender should receive confirmation that the email was delivered.",
"sourceColumnName": "deliveryreceiptrequested",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "regardingObjectId",
"description": "Choose the record that the email relates to.",
"sourceColumnName": "regardingobjectid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode",
"description": "Shows whether the email is open, completed, or canceled. Completed and canceled email is read-only and can't be edited.",
"sourceColumnName": "statecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "ownerId",
"description": "Enter the user or team who is assigned to manage the record. This field is updated every time the record is assigned to a different user.",
"sourceColumnName": "ownerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "messageId",
"description": "Unique identifier of the email message. Used only for email that is received.",
"sourceColumnName": "messageid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningUser",
"description": "Unique identifier of the user who owns the email activity.",
"sourceColumnName": "owninguser",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "deliveryAttempts",
"description": "Shows the count of the number of attempts made to send the email. The count is used as an indicator of email routing issues.",
"sourceColumnName": "deliveryattempts",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "compressed",
"description": "Indicates if the body is compressed.",
"sourceColumnName": "compressed",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "notifications",
"description": "Select the notification code to identify issues with the email recipients or attachments, such as blocked attachments.",
"sourceColumnName": "notifications",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "notifications_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "timeZoneRuleVersionNumber",
"description": "For internal use only.",
"sourceColumnName": "timezoneruleversionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "UTCConversionTimeZoneCode",
"description": "Time zone code that was in use when the record was created.",
"sourceColumnName": "utcconversiontimezonecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Shows who created the record on behalf of another user.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Shows who last updated the record on behalf of another user.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "activityTypeCode",
"description": "Shows the type of activity.",
"sourceColumnName": "activitytypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "activityTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isRegularActivity",
"description": "Information regarding whether the activity is a regular activity type or event type.",
"sourceColumnName": "isregularactivity",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "owningTeam",
"description": "Unique identifier of the team who owns the email activity.",
"sourceColumnName": "owningteam",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "transactionCurrencyId",
"description": "Choose the local currency for the record to make sure budgets are reported in the correct currency.",
"sourceColumnName": "transactioncurrencyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeRate",
"description": "Shows the conversion rate of the record's currency. The exchange rate is used to convert all money fields in the record from the local currency to the system's default currency.",
"sourceColumnName": "exchangerate",
"dataType": "decimal",
"dataCategory": "Uncategorized"
},
{
"name": "emailSender",
"description": "Shows the sender of the email.",
"sourceColumnName": "emailsender",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "sendersAccount",
"description": "Shows the parent account of the sender of the email.",
"sourceColumnName": "sendersaccount",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "attachmentCount",
"description": "Shows the umber of attachments of the email message.",
"sourceColumnName": "attachmentcount",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "senderMailboxId",
"description": "Select the mailbox associated with the sender of the email message.",
"sourceColumnName": "sendermailboxid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "deliveryPriorityCode",
"description": "Select the priority of delivery of the email to the email server.",
"sourceColumnName": "deliveryprioritycode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "deliveryPriorityCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "parentActivityId",
"description": "Select the activity that the email is associated with.",
"sourceColumnName": "parentactivityid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "inReplyTo",
"description": "Type the ID of the email message that this email activity is a response to.",
"sourceColumnName": "inreplyto",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "baseConversationIndexHash",
"description": "Hash of base of conversation index.",
"sourceColumnName": "baseconversationindexhash",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "conversationIndex",
"description": "Identifier for all the email responses for this conversation.",
"sourceColumnName": "conversationindex",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "correlationMethod",
"description": "Shows how an email is matched to an existing email in Microsoft Dynamics 365. For system use only.",
"sourceColumnName": "correlationmethod",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "correlationMethod_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "sentOn",
"description": "Shows the date and time that the email was sent.",
"sourceColumnName": "senton",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "postponeEmailProcessingUntil",
"description": "For internal use only.",
"sourceColumnName": "postponeemailprocessinguntil",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "processId",
"description": "Shows the ID of the process.",
"sourceColumnName": "processid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stageId",
"description": "Shows the ID of the stage.",
"sourceColumnName": "stageid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "activityAdditionalParams",
"description": "For internal use only.",
"sourceColumnName": "activityadditionalparams",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isUnsafe",
"description": "For internal use only.",
"sourceColumnName": "isunsafe",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "SLAId",
"description": "Choose the service level agreement (SLA) that you want to apply to the email record.",
"sourceColumnName": "slaid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "SLAInvokedId",
"description": "Last SLA that was applied to this email. This field is for internal use only.",
"sourceColumnName": "slainvokedid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "onHoldTime",
"description": "Shows how long, in minutes, that the record was on hold.",
"sourceColumnName": "onholdtime",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "lastOnHoldTime",
"description": "Contains the date and time stamp of the last on hold time.",
"sourceColumnName": "lastonholdtime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "traversedPath",
"description": "For internal use only.",
"sourceColumnName": "traversedpath",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "attachmentOpenCount",
"description": "Shows the number of times an email attachment has been viewed.",
"sourceColumnName": "attachmentopencount",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "conversationTrackingId",
"description": "Conversation Tracking Id.",
"sourceColumnName": "conversationtrackingid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "delayedEmailSendTime",
"description": "Enter the expected date and time when email will be sent.",
"sourceColumnName": "delayedemailsendtime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "lastOpenedTime",
"description": "Shows the latest date and time when email was opened.",
"sourceColumnName": "lastopenedtime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "linksClickedCount",
"description": "Shows the number of times a link in an email has been clicked.",
"sourceColumnName": "linksclickedcount",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "openCount",
"description": "Shows the number of times an email has been opened.",
"sourceColumnName": "opencount",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "replyCount",
"description": "Shows the number of replies received for an email.",
"sourceColumnName": "replycount",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "emailTrackingId",
"description": "Email Tracking Id.",
"sourceColumnName": "emailtrackingid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "followEmailUserPreference",
"description": "Select whether the email allows following recipient activities sent from Microsoft Dynamics 365.This is user preference state which can be overridden by system evaluated state.",
"sourceColumnName": "followemailuserpreference",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "isEmailFollowed",
"description": "For internal use only. Shows whether this email is followed. This is evaluated state which overrides user selection of follow email.",
"sourceColumnName": "isemailfollowed",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "emailReminderExpiryTime",
"description": "Shows the date and time when an email reminder expires.",
"sourceColumnName": "emailreminderexpirytime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "emailReminderType",
"description": "Shows the type of the email reminder.",
"sourceColumnName": "emailremindertype",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "emailReminderType_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "emailReminderStatus",
"description": "Shows the status of the email reminder.",
"sourceColumnName": "emailreminderstatus",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "emailReminderStatus_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "emailReminderText",
"description": "For internal use only.",
"sourceColumnName": "emailremindertext",
"dataType": "string",
"dataCategory": "Identity.Service.Email"
},
{
"name": "templateId",
"description": "For internal use only. ID for template used in email.",
"sourceColumnName": "templateid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "reminderActionCardId",
"description": "Reminder Action Card Id.",
"sourceColumnName": "reminderactioncardid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "sortDate",
"description": "Shows the date and time by which the activities are sorted.",
"sourceColumnName": "sortdate",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "isEmailReminderSet",
"description": "For internal use only. Shows whether this email Reminder is Set.",
"sourceColumnName": "isemailreminderset",
"dataType": "boolean",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "Activity",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "owningBusinessUnit"
},
"toAttribute": {
"entityName": "BusinessUnit",
"attributeName": "businessUnitId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "KnowledgeBaseRecord",
"attributeName": "knowledgeBaseRecordId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "KnowledgeArticle",
"attributeName": "knowledgearticleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "owningUser"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "owningTeam"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "transactionCurrencyId"
},
"toAttribute": {
"entityName": "Currency",
"attributeName": "transactionCurrencyId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "emailSender"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "emailSender"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "emailSender"
},
"toAttribute": {
"entityName": "Queue",
"attributeName": "queueId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "emailSender"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "sendersAccount"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "parentActivityId"
},
"toAttribute": {
"entityName": "Email",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "SLAId"
},
"toAttribute": {
"entityName": "SLA",
"attributeName": "SLAId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Email",
"attributeName": "SLAInvokedId"
},
"toAttribute": {
"entityName": "SLA",
"attributeName": "SLAId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,275 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "EmailSignature",
"description": "Signature for email message",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/EmailSignature.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "emailSignatureId",
"description": "Unique identifier of the email signature.",
"sourceColumnName": "emailsignatureid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningBusinessUnit",
"description": "Unique identifier of the business unit that owns the email signature.",
"sourceColumnName": "owningbusinessunit",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isPersonal",
"description": "Information about whether the email signature is personal or is available to all users.",
"sourceColumnName": "ispersonal",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "mimeType",
"description": "MIME type of the email signature.",
"sourceColumnName": "mimetype",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "body",
"description": "Body text of the email signature.",
"sourceColumnName": "body",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "title",
"description": "Title of the email signature.",
"sourceColumnName": "title",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Description of the email signature.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningUser",
"description": "Unique identifier of the user who owns the email signature.",
"sourceColumnName": "owninguser",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Unique identifier of the user who created the email signature.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "presentationXml",
"description": "XML data for the body of the email signature.",
"sourceColumnName": "presentationxml",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Date and time when the email signature was created.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "modifiedBy",
"description": "Unique identifier of the user who last modified the email signature.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Date and time when the email signature was last modified.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "ownerId",
"description": "Unique identifier of the user or team who owns the email signature for the email activity.",
"sourceColumnName": "ownerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "generationTypeCode",
"description": "For internal use only.",
"sourceColumnName": "generationtypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "languageCode",
"description": "Language of the email signature.",
"sourceColumnName": "languagecode",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "overwriteTime",
"description": "For internal use only.",
"sourceColumnName": "overwritetime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "componentState",
"description": "For internal use only.",
"sourceColumnName": "componentstate",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "componentState_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Unique identifier of the delegate user who created the email signature.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Unique identifier of the delegate user who last modified the email signature.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningTeam",
"description": "Unique identifier of the team who owns the email signature.",
"sourceColumnName": "owningteam",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isCustomizable",
"description": "Information that specifies whether this component can be customized.",
"sourceColumnName": "iscustomizable",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "isDefault",
"description": "Information that specifies whether the email signature is default to the user.",
"sourceColumnName": "isdefault",
"dataType": "boolean",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "EmailSignature",
"attributeName": "owningBusinessUnit"
},
"toAttribute": {
"entityName": "BusinessUnit",
"attributeName": "businessUnitId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "EmailSignature",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "EmailSignature",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "EmailSignature",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "EmailSignature",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "EmailSignature",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "EmailSignature",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,589 @@
{
"name": "",
"culture": "en-EN",
"entities": [
{
"$type": "LocalEntity",
"name": "Fax",
"description": "Activity that tracks call outcome and number of pages for a fax and optionally stores an electronic copy of the document.",
"schemas": [
"https://raw.githubusercontent.com/Microsoft/CDM/master/schemaDocuments/core/applicationCommon/Fax.cdm.json.0.6.dplx"
],
"attributes": [
{
"name": "regardingObjectId",
"description": "Choose the record that the fax relates to.",
"sourceColumnName": "regardingobjectid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledDurationMinutes",
"description": "Shows the expected duration of the fax activity, in minutes.",
"sourceColumnName": "scheduleddurationminutes",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "owningBusinessUnit",
"description": "Unique identifier of the business unit that owns the fax activity.",
"sourceColumnName": "owningbusinessunit",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "createdOn",
"description": "Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "createdon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "coverPageName",
"description": "Type the name of the cover page to use when sending the fax.",
"sourceColumnName": "coverpagename",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "billingCode",
"description": "Type the billing code for the fax to make sure the fax is charged to the correct sender or customer account.",
"sourceColumnName": "billingcode",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "actualDurationMinutes",
"description": "Type the number of minutes spent creating and sending the fax. The duration is used in reporting.",
"sourceColumnName": "actualdurationminutes",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode",
"description": "Shows whether the fax activity is open, completed, or canceled. Completed and canceled fax activities are read-only and can't be edited.",
"sourceColumnName": "statecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "stateCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "numberOfPages",
"description": "Type the number of pages included in the fax.",
"sourceColumnName": "numberofpages",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "description",
"description": "Type additional information to describe the fax, such as the primary message or the products and services featured.",
"sourceColumnName": "description",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "scheduledEnd",
"description": "Enter the expected due date and time.",
"sourceColumnName": "scheduledend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "faxNumber",
"description": "Type the recipient's fax number.",
"sourceColumnName": "faxnumber",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "to",
"description": "Enter the account, contact, lead, queue, or user recipients for the fax.",
"sourceColumnName": "to",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "category",
"description": "Type a category to identify the fax type, such as sales offer or press release, to tie the fax to a business group or function.",
"sourceColumnName": "category",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "actualStart",
"description": "Enter the actual start date and time for the fax. By default, it displays the date and time when the activity was created, but can be edited to capture the actual time to create and send the fax.",
"sourceColumnName": "actualstart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "tsid",
"description": "Type the Transmitting Subscriber ID (TSID) associated with a send action. This is typically a combination of the recipient's fax or phone number and company name.",
"sourceColumnName": "tsid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isWorkflowCreated",
"description": "Indication of whether the fax activity was created by a workflow rule.",
"sourceColumnName": "isworkflowcreated",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "ownerId",
"description": "Enter the user or team who is assigned to manage the record. This field is updated every time the record is assigned to a different user.",
"sourceColumnName": "ownerid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "versionNumber",
"description": "Version number of the fax.",
"sourceColumnName": "versionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "actualEnd",
"description": "Enter the actual end date and time of the fax. By default, it displays the date and time when the activity was completed or canceled, but can be edited to capture the actual time to create and send the fax.",
"sourceColumnName": "actualend",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "directionCode",
"description": "Select the direction of the fax as incoming or outbound.",
"sourceColumnName": "directioncode",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOn",
"description": "Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics 365 options.",
"sourceColumnName": "modifiedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Modify"
},
{
"name": "scheduledStart",
"description": "Enter the expected due date and time.",
"sourceColumnName": "scheduledstart",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "from",
"description": "Enter the account, contact, lead, queue, or user who sent the fax.",
"sourceColumnName": "from",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "activityId",
"description": "Unique identifier of the fax activity.",
"sourceColumnName": "activityid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedBy",
"description": "Shows who last updated the record.",
"sourceColumnName": "modifiedby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode",
"description": "Select the fax's status.",
"sourceColumnName": "statuscode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "statusCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "subject",
"description": "Type a short description about the objective or primary topic of the fax.",
"sourceColumnName": "subject",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "priorityCode",
"description": "Select the priority so that preferred customers or critical issues are handled quickly.",
"sourceColumnName": "prioritycode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "priorityCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "subcategory",
"description": "Type a subcategory to identify the fax type to relate the activity to a specific product, sales region, business group, or other function.",
"sourceColumnName": "subcategory",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isBilled",
"description": "Information regarding whether the fax activity was billed as part of resolving a case.",
"sourceColumnName": "isbilled",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "createdBy",
"description": "Shows who created the record.",
"sourceColumnName": "createdby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "owningUser",
"description": "Unique identifier of the user that owns the fax activity.",
"sourceColumnName": "owninguser",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "timeZoneRuleVersionNumber",
"description": "For internal use only.",
"sourceColumnName": "timezoneruleversionnumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "overriddenCreatedOn",
"description": "Date and time that the record was migrated.",
"sourceColumnName": "overriddencreatedon",
"dataType": "dateTime",
"dataCategory": "Measurement.Date.Creation"
},
{
"name": "importSequenceNumber",
"description": "Unique identifier of the data import or data migration that created this record.",
"sourceColumnName": "importsequencenumber",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "UTCConversionTimeZoneCode",
"description": "Time zone code that was in use when the record was created.",
"sourceColumnName": "utcconversiontimezonecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "createdOnBehalfBy",
"description": "Shows who created the record on behalf of another user.",
"sourceColumnName": "createdonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "modifiedOnBehalfBy",
"description": "Shows who last updated the record on behalf of another user.",
"sourceColumnName": "modifiedonbehalfby",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "activityTypeCode",
"description": "Type of activity.",
"sourceColumnName": "activitytypecode",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "activityTypeCode_display",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "isRegularActivity",
"description": "Information regarding whether the activity is a regular activity type or event type.",
"sourceColumnName": "isregularactivity",
"dataType": "boolean",
"dataCategory": "Uncategorized"
},
{
"name": "owningTeam",
"description": "Unique identifier of the team that owns the fax activity.",
"sourceColumnName": "owningteam",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "transactionCurrencyId",
"description": "Choose the local currency for the record to make sure budgets are reported in the correct currency.",
"sourceColumnName": "transactioncurrencyid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "exchangeRate",
"description": "Shows the conversion rate of the record's currency. The exchange rate is used to convert all money fields in the record from the local currency to the system's default currency.",
"sourceColumnName": "exchangerate",
"dataType": "decimal",
"dataCategory": "Uncategorized"
},
{
"name": "processId",
"description": "Shows the ID of the process.",
"sourceColumnName": "processid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "stageId",
"description": "Shows the ID of the stage.",
"sourceColumnName": "stageid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "traversedPath",
"description": "For internal use only.",
"sourceColumnName": "traversedpath",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "SLAId",
"description": "Choose the service level agreement (SLA) that you want to apply to the fax record.",
"sourceColumnName": "slaid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "SLAInvokedId",
"description": "Last SLA that was applied to this fax. This field is for internal use only.",
"sourceColumnName": "slainvokedid",
"dataType": "string",
"dataCategory": "Uncategorized"
},
{
"name": "onHoldTime",
"description": "Shows how long, in minutes, that the record was on hold.",
"sourceColumnName": "onholdtime",
"dataType": "int64",
"dataCategory": "Uncategorized"
},
{
"name": "lastOnHoldTime",
"description": "Contains the date and time stamp of the last on hold time.",
"sourceColumnName": "lastonholdtime",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
},
{
"name": "sortDate",
"description": "Shows the date and time by which the activities are sorted.",
"sourceColumnName": "sortdate",
"dataType": "dateTime",
"dataCategory": "Uncategorized"
}
]
}
],
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "Contact",
"attributeName": "contactId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "Account",
"attributeName": "accountId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "KnowledgeBaseRecord",
"attributeName": "knowledgeBaseRecordId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "regardingObjectId"
},
"toAttribute": {
"entityName": "KnowledgeArticle",
"attributeName": "knowledgearticleId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "owningBusinessUnit"
},
"toAttribute": {
"entityName": "BusinessUnit",
"attributeName": "businessUnitId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "ownerId"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "activityId"
},
"toAttribute": {
"entityName": "Activity",
"attributeName": "activityId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "modifiedBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "createdBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "owningUser"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "createdOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "modifiedOnBehalfBy"
},
"toAttribute": {
"entityName": "User",
"attributeName": "systemUserId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "owningTeam"
},
"toAttribute": {
"entityName": "Team",
"attributeName": "teamId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "transactionCurrencyId"
},
"toAttribute": {
"entityName": "Currency",
"attributeName": "transactionCurrencyId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "SLAId"
},
"toAttribute": {
"entityName": "SLA",
"attributeName": "SLAId"
}
},
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "Fax",
"attributeName": "SLAInvokedId"
},
"toAttribute": {
"entityName": "SLA",
"attributeName": "SLAId"
}
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше