[
{
	"match": {
		"serviceClassRegex": "(?<ServiceClass>.*)",
		"serviceNameRegex": "(?<ServiceName>.*)",
		"calledMethodRegex": "UNKNOWN"
	},
	"replace": {
		"serviceClass": "${ServiceClass}",
		"serviceName": "${ServiceName}",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(WPS)|(DataAnalysis)",
		"serviceNameRegex": "DataMiner",
		"calledMethodRegex": "(?<CalledMethod>.*)"
	},
	"replace": {
		"serviceClass": "DataAnalysis",
		"serviceName": "DataMiner",
		"calledMethod": "${CalledMethod}"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "3MConnector",
		"calledMethodRegex": "^\/{0,1}gcube\/service\/connect.*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "3MConnector",
		"calledMethod": "connect"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "3MConnector",
		"calledMethodRegex": "^\/{0,1}gcube\/service\/disconnect.*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "3MConnector",
		"calledMethod": "disconnect"
	}
},{
	"match": {
		"serviceClassRegex": "Common",
		"serviceNameRegex": "AuthorizationService",
		"calledMethodRegex": "^/{0,1}gcube/service/generate.*"
	},
	"replace": {
		"serviceClass": "Common",
		"serviceName": "AuthorizationService",
		"calledMethod": "generate"
	}
},{
	"match": {
		"serviceClassRegex": "Common",
		"serviceNameRegex": "AuthorizationService",
		"calledMethodRegex": "^/{0,1}gcube/service/retrieve.*"
	},
	"replace": {
		"serviceClass": "Common",
		"serviceName": "AuthorizationService",
		"calledMethod": "retrieve"
	}
},{
	"match": {
		"serviceClassRegex": "Common",
		"serviceNameRegex": "AuthorizationService",
		"calledMethodRegex": "^((e\/)|\/){0,1}gcube\/resource\/scopes"
	},
	"replace": {
		"serviceClass": "Common",
		"serviceName": "AuthorizationService",
		"calledMethod": "scopes"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})(?<Collection>(group|item|resource|namespace))(s){0,1}\/(?<Action>(create|show|purge|delete))(\/{0,1})"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "${Action} ${Collection}"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})(?<Collection>(groups|items|resources))\/(?<Action>list)(\/{0,1})"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "${Action} ${Collection}"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})licen(c|s)es\/(?<Action>(create|show|purge|delete))(\/{0,1})"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "${Action} license"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})licen(c|s)es\/(?<Action>list)(\/{0,1})"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "${Action} licenses"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})profiles\/namespaces(s){0,1}.*"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "list namespaces"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})organi(s|z)ation(s){0,1}\/(?<Action>(create|show|purge|delete))(\/{0,1})"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "${Action} organization"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})organi(s|z)ation(s){0,1}\/(?<Action>list)(\/){0,1}.*|(listOrgani(s|z)ation(s{0,1}))"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "list organizations"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "^\/rest$|^UNKNOWN$|^OTHER$"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})profile(s){0,1}\/(?<Action>(show|profile))(\/){0,1}"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "show profile"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "Catalogue-WS",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})profile(s){0,1}\/(?<Action>(list|profile_names))(\/{0,1})"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "Catalogue-WS",
		"calledMethod": "list profile"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "CkanConnector",
		"calledMethodRegex": "^\/{0,1}gcube\/service\/connect.*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "CkanConnector",
		"calledMethod": "connect"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "CkanConnector",
		"calledMethodRegex": "^\/{0,1}gcube\/service\/disconnect.*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "CkanConnector",
		"calledMethod": "disconnect"
	}
},{
	"match": {
		"serviceClassRegex": "DataAnalysis",
		"serviceNameRegex": "cmems-importer-service",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "DataAnalysis",
		"serviceName": "cmems-importer-service",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataAnalysis",
		"serviceNameRegex": "data-analytics-visualization",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "DataAnalysis",
		"serviceName": "data-analytics-visualization",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(WPS)|(DataAnalysis)",
		"serviceNameRegex": "DataMiner",
		"calledMethodRegex": "^\/{0,1}(?<Method>(?!(UNKNOWN|OTHER|(gcube\/resource\/scopes))).*)"
	},
	"replace": {
		"serviceClass": "DataAnalysis",
		"serviceName": "DataMiner",
		"calledMethod": "${Method}"
	}
},{
	"match": {
		"serviceClassRegex": "(WPS)|(DataAnalysis)",
		"serviceNameRegex": "DataMiner",
		"calledMethodRegex": "^\/{0,1}(UNKNOWN|OTHER|(gcube\/resource\/scopes)).*"
	},
	"replace": {
		"serviceClass": "DataAnalysis",
		"serviceName": "DataMiner",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(DataAnalysis)|(data-analysis)|dataanalysis",
		"serviceNameRegex": "dataminer-pool-manager",
		"calledMethodRegex": "\/{0,1}api\/(algorithm\/){0,1}(?<Method>[a-zA-Z]*)"
	},
	"replace": {
		"serviceClass": "DataAnalysis",
		"serviceName": "dataminer-pool-manager",
		"calledMethod": "${Method}"
	}
},{
	"match": {
		"serviceClassRegex": "(DataAnalysis)|(data-analysis)|dataanalysis",
		"serviceNameRegex": "dataminer-pool-manager",
		"calledMethodRegex": "\/{0,1}(api|OTHER|(gcube\/resource))"
	},
	"replace": {
		"serviceClass": "DataAnalysis",
		"serviceName": "dataminer-pool-manager",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataTransfer",
		"serviceNameRegex": "data-transfer-service",
		"calledMethodRegex": ".*(c|C)apabilities.*"
	},
	"replace": {
		"serviceClass": "DataTransfer",
		"serviceName": "data-transfer-service",
		"calledMethod": "getCapabilities"
	}
},{
	"match": {
		"serviceClassRegex": "DataTransfer",
		"serviceNameRegex": "data-transfer-service",
		"calledMethodRegex": ".*TransferStatus.*"
	},
	"replace": {
		"serviceClass": "DataTransfer",
		"serviceName": "data-transfer-service",
		"calledMethod": "getTransferStatus"
	}
},{
	"match": {
		"serviceClassRegex": "DataTransfer",
		"serviceNameRegex": "data-transfer-service",
		"calledMethodRegex": "(^\/{0,1}gcube\/service\/(REST|application.wadl))|OTHER"
	},
	"replace": {
		"serviceClass": "DataTransfer",
		"serviceName": "data-transfer-service",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataTransfer",
		"serviceNameRegex": "data-transfer-service",
		"calledMethodRegex": "^(\/){0,1}gcube\/service\/REST\/.*"
	},
	"replace": {
		"serviceClass": "DataTransfer",
		"serviceName": "data-transfer-service",
		"calledMethod": "transfer"
	}
},{
	"match": {
		"serviceClassRegex": "ResourceManagement",
		"serviceNameRegex": "FHNManager",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "ResourceManagement",
		"serviceName": "FHNManager",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(Index)|(DataRetrieval)",
		"serviceNameRegex": "(FullTextIndexNode)|(FullTextFullTextIndexNodeNode)",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "DataRetrieval",
		"serviceName": "FullTextIndexNode",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(DataCatalogue)|(DataPublishing)",
		"serviceNameRegex": "(science-catalogue)|(gcat)|(gCat)",
		"calledMethodRegex": "^(\/){0,1}(rest\/(api\/){0,1}){0,1}(?<Collection>group|item|license|namespace|organization|profile|user)s\/(?!list|create)[%0-9a-zA-Z\\-_.+:]*$"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "gcat",
		"calledMethod": "read ${Collection}"
	}
},{
	"match": {
		"serviceClassRegex": "(DataCatalogue)|(DataPublishing)",
		"serviceNameRegex": "(science-catalogue)|(gcat)|(gCat)",
		"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1}){0,1}(?<Collection>((groups(\/list){0,1}))|items|licenses|namespaces|organizations|profiles|users)$"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "gcat",
		"calledMethod": "list ${Collection}"
	}
},{
	"match": {
		"serviceClassRegex": "(DataCatalogue)|(DataPublishing)",
		"serviceNameRegex": "(science-catalogue)|(gcat)|(gCat)",
		"calledMethodRegex": "(^\/index$)|OTHER|UNKNOWN"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "gcat",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(DataCatalogue)|(DataPublishing)",
		"serviceNameRegex": "(science-catalogue)|(gcat)|(gCat)",
		"calledMethodRegex": "^(\/){0,1}(rest\/(api\/){0,1}){0,1}items\/[%0-9a-zA-Z\\-_]*\/resources\/[%0-9a-zA-Z\\-_.+:]*$"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "gcat",
		"calledMethod": "read resource"
	}
},{
	"match": {
		"serviceClassRegex": "(DataCatalogue)|(DataPublishing)",
		"serviceNameRegex": "(science-catalogue)|(gcat)|(gCat)",
		"calledMethodRegex": "^(\/){0,1}(rest\/(api\/){0,1}){0,1}items\/[%0-9a-zA-Z\\-_.+:]*\/resources$"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "gcat",
		"calledMethod": "list resources"
	}
},{
	"match": {
		"serviceClassRegex": "(geoanalytics)|(SDI)",
		"serviceNameRegex": "geoanalytics-gos.*",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "geoanalytics-gos",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "geoanalytics",
		"serviceNameRegex": "geoanalytics-main-service",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "geoanalytics-main-service",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(SDI)|(SpatialData)",
		"serviceNameRegex": "GeoNetwork",
		"calledMethodRegex": ".*(\\.create(\\.form){0,1}|\\.insert|\\.xmlinsert\\.form)$"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "GeoNetwork",
		"calledMethod": "create"
	}
},{
	"match": {
		"serviceClassRegex": "(SDI)|(SpatialData)",
		"serviceNameRegex": "GeoNetwork",
		"calledMethodRegex": ".*(\\.delete(\\.batch|@json|$))"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "GeoNetwork",
		"calledMethod": "delete"
	}
},{
	"match": {
		"serviceClassRegex": "(SDI)|(SpatialData)",
		"serviceNameRegex": "GeoNetwork",
		"calledMethodRegex": ".*(\\.list(@json|$))"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "GeoNetwork",
		"calledMethod": "list"
	}
},{
	"match": {
		"serviceClassRegex": "(SDI)|(SpatialData)",
		"serviceNameRegex": "GeoNetwork",
		"calledMethodRegex": "^(?!.*(read|create|insert|delete|list|get|show|info|search|update|edit)).*$|^(.*(updated|editors|pwupdate|(records.*)|(systeminfo.*)|forget-password|getmap.png|(GetCapabilities.*)|(\/codelists\/.*)))$"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "GeoNetwork",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(SDI)|(SpatialData)",
		"serviceNameRegex": "GeoNetwork",
		"calledMethodRegex": "(.*(\\.get(\\..*|\/.*|$)|\\.show(\\..*|$)|((\\.|/)info(?!edit).*)))|(read@json)"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "GeoNetwork",
		"calledMethod": "read"
	}
},{
	"match": {
		"serviceClassRegex": "(SDI)|(SpatialData)",
		"serviceNameRegex": "GeoNetwork",
		"calledMethodRegex": ".*(\\.|-|/|package_|open)search(\/.*|unused(.form){0,1}|\\..*|;jsessionid=.*|-.*|$)"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "GeoNetwork",
		"calledMethod": "search"
	}
},{
	"match": {
		"serviceClassRegex": "(SDI)|(SpatialData)",
		"serviceNameRegex": "GeoNetwork",
		"calledMethodRegex": ".*(\\.update($|\\.finish|@json)|\\.edit(!{0,1}|\\.save(only){0,1}|\\.commit)$|\\.infoedit$|\\.pwedit$)"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "GeoNetwork",
		"calledMethod": "update"
	}
},{
	"match": {
		"serviceClassRegex": "(GeoServer)|(geoserver)|(SpatialData)|(SDI)",
		"serviceNameRegex": "(GeoServer)|(geoserver)",
		"calledMethodRegex": "^(?!.*\/(wfs|wms|wcs|wmts)).*$"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "GeoServer",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(GeoServer)|(geoserver)|(SpatialData)|(SDI)",
		"serviceNameRegex": "(GeoServer)|(geoserver)",
		"calledMethodRegex": "^.*\/(?<Protocol>(wfs|wms|wcs|wmts)).*$"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "GeoServer",
		"calledMethod": "/${Protocol}",
		"_comment" : "Do not remove the initial / to avoid that wms is replaced with OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "GRSFPublisher",
		"calledMethodRegex": "(.*publish-product.*)|(.*create-product.*)|(create)"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "GRSFPublisher",
		"calledMethod": "create"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "GRSFPublisher",
		"calledMethodRegex": "(.*delete-product.*)|(delete)"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "GRSFPublisher",
		"calledMethod": "delete"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "GRSFPublisher",
		"calledMethodRegex": ".*get-license(s{0,1}).*"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "GRSFPublisher",
		"calledMethod": "getLicenses"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "GRSFPublisher",
		"calledMethodRegex": ".*get-catalogue-id-(and-url-){0,1}from-name.*"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "GRSFPublisher",
		"calledMethod": "getURLandIdFromName"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "GRSFPublisher",
		"calledMethodRegex": ".*((hello)|(UNKNOWN)|(OTHER)).*"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "GRSFPublisher",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
		"serviceNameRegex": "GRSFPublisher",
		"calledMethodRegex": "(.*update-product.*)|(update)"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "GRSFPublisher",
		"calledMethod": "update"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "HomeLibraryFileSystem",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "HomeLibraryFileSystem",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "HomeLibraryWebapp",
		"calledMethodRegex": "\/{0,1}((acl|get|rest|post|trash|versioning)\/){0,1}(?<Method>[a-zA-Z]*)"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "HomeLibraryWebapp",
		"calledMethod": "${Method}"
	}
},{
	"match": {
		"serviceClassRegex": "InformationSystem",
		"serviceNameRegex": "ICProxy",
		"calledMethodRegex": "^(\/){0,1}gcube\/service\/(?!GCoreEndpoint|HostingNode|RuntimeResource|GenericResource).*"
	},
	"replace": {
		"serviceClass": "InformationSystem",
		"serviceName": "ICProxy",
		"calledMethod": "getResourceById"
	}
},{
	"match": {
		"serviceClassRegex": "InformationSystem",
		"serviceNameRegex": "ICProxy",
		"calledMethodRegex": "^(\/){0,1}gcube\/service\/(GCoreEndpoint|HostingNode|RuntimeResource|GenericResource).*"
	},
	"replace": {
		"serviceClass": "InformationSystem",
		"serviceName": "ICProxy",
		"calledMethod": "query"
	}
},{
	"match": {
		"serviceClassRegex": "Application",
		"serviceNameRegex": "perform-service",
		"calledMethodRegex": "^\/{0,1}gcube\/(service|resource)\/import(\/){0,1}.*"
	},
	"replace": {
		"serviceClass": "Application",
		"serviceName": "perform-service",
		"calledMethod": "import"
	}
},{
	"match": {
		"serviceClassRegex": "Application",
		"serviceNameRegex": "perform-service",
		"calledMethodRegex": "^\/{0,1}gcube\/(service|resource)\/mappings(\/){0,1}.*"
	},
	"replace": {
		"serviceClass": "Application",
		"serviceName": "perform-service",
		"calledMethod": "mappings"
	}
},{
	"match": {
		"serviceClassRegex": "Application",
		"serviceNameRegex": "perform-service",
		"calledMethodRegex": "^\/{0,1}gcube\/(service|resource)(\/){0,1}$"
	},
	"replace": {
		"serviceClass": "Application",
		"serviceName": "perform-service",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "Application",
		"serviceNameRegex": "perform-service",
		"calledMethodRegex": "^\/{0,1}gcube\/(service|resource)\/performance(\/){0,1}.*"
	},
	"replace": {
		"serviceClass": "Application",
		"serviceName": "perform-service",
		"calledMethod": "performance"
	}
},{
	"match": {
		"serviceClassRegex": "(InformationSystem)|(Accounting)",
		"serviceNameRegex": "QuotaManager",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "Accounting",
		"serviceName": "QuotaManager",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataAnalysis",
		"serviceNameRegex": "RConnector",
		"calledMethodRegex": "^\/{0,1}gcube\/service\/connect.*"
	},
	"replace": {
		"serviceClass": "DataAnalysis",
		"serviceName": "RConnector",
		"calledMethod": "connect"
	}
},{
	"match": {
		"serviceClassRegex": "DataAnalysis",
		"serviceNameRegex": "RConnector",
		"calledMethodRegex": "UNKNOWN|OTHER|^\/{0,1}gcube\/resource\/scopes"
	},
	"replace": {
		"serviceClass": "DataAnalysis",
		"serviceName": "RConnector",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "ResourceManagement",
		"serviceNameRegex": "resource-manager-webapp",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "ResourceManagement",
		"serviceName": "resource-manager-webapp",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "InformationSystem",
		"serviceNameRegex": "(resource-registry)|(joint-resource-registry)",
		"calledMethodRegex": "(?!(listContexts|createContext|readContext|updateContext|deleteContext|listInstances|existInstance|createInstance|readInstance|updateInstance|deleteInstance|createType|readType|addToContext|removeFromContext|query|rawQuery)).*"
	},
	"replace": {
		"serviceClass": "InformationSystem",
		"serviceName": "resource-registry",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "Portal",
		"serviceNameRegex": "ReverseProxy",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "Portal",
		"serviceName": "ReverseProxy",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "SDI",
		"serviceNameRegex": "sdi-service",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "sdi-service",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataPublishing",
		"serviceNameRegex": "SDMXDataSource.*",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "DataPublishing",
		"serviceName": "SDMXDataSource",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "ShareLatex",
		"calledMethodRegex": "^\/{0,1}gcube\/service\/connect.*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "ShareLatex",
		"calledMethod": "connect"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "ShareLatex",
		"calledMethodRegex": "^\/{0,1}gcube\/service\/disconnect.*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "ShareLatex",
		"calledMethod": "disconnect"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "ShareLatex",
		"calledMethodRegex": "^(?!(\/{0,1}gcube\/service\/){0,1}((connect)|(disconnect)|(project))).*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "ShareLatex",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "ShareLatex",
		"calledMethodRegex": "^\/{0,1}gcube\/service\/project.*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "ShareLatex",
		"calledMethod": "project"
	}
},{
	"match": {
		"serviceClassRegex": "(Search)|(DataRetrieval)",
		"serviceNameRegex": "SimulFishGrowthData",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "DataRetrieval",
		"serviceName": "SimulFishGrowthData",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "Application",
		"serviceNameRegex": "Smaph",
		"calledMethodRegex": "annotate"
	},
	"replace": {
		"serviceClass": "Application",
		"serviceName": "Smaph",
		"calledMethod": "annotate"
	}
},{
	"match": {
		"serviceClassRegex": "Application",
		"serviceNameRegex": "Smaph",
		"calledMethodRegex": "(?!annotate).*"
	},
	"replace": {
		"serviceClass": "Application",
		"serviceName": "Smaph",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "VREManagement",
		"serviceNameRegex": "(SmartExecutor)|(smart-executor)",
		"calledMethodRegex": ".*((launch)|(execute)|(POST .*executions)).*"
	},
	"replace": {
		"serviceClass": "VREManagement",
		"serviceName": "SmartExecutor",
		"calledMethod": "execute"
	}
},{
	"match": {
		"serviceClassRegex": "VREManagement",
		"serviceNameRegex": "(SmartExecutor)|(smart-executor)",
		"calledMethodRegex": ".*((getAvailablePlugins.*)|(^(GET ){0,1}(\/){0,1}plugins(\/){0,1}$))"
	},
	"replace": {
		"serviceClass": "VREManagement",
		"serviceName": "SmartExecutor",
		"calledMethod": "getAvailablePlugins"
	}
},{
	"match": {
		"serviceClassRegex": "VREManagement",
		"serviceNameRegex": "(SmartExecutor)|(smart-executor)",
		"calledMethodRegex": ".*((getScheduledExecution.*)|((GET ){0,1}.*executions(\/(ORPHAN){0,1}){0,1}()$))|((GET ){0,1}(\/){0,1}(rest\/){0,1}plugins\/[0-9a-zA-Z%\\-_]{1,})"
	},
	"replace": {
		"serviceClass": "VREManagement",
		"serviceName": "SmartExecutor",
		"calledMethod": "getScheduledExecution"
	}
},{
	"match": {
		"serviceClassRegex": "VREManagement",
		"serviceNameRegex": "(SmartExecutor)|(smart-executor)",
		"calledMethodRegex": ".*((getStateEvolution)|(getState)|(GET .*executions\/(?!executions).{1,})).*|((GET ){0,1}(\/){0,1}(rest\/){0,1}plugins\/[0-9a-zA-Z%\\-_]{1,}\/(?!executions).*)"
	},
	"replace": {
		"serviceClass": "VREManagement",
		"serviceName": "SmartExecutor",
		"calledMethod": "getState"
	}
},{
	"match": {
		"serviceClassRegex": "VREManagement",
		"serviceNameRegex": "(SmartExecutor)|(smart-executor)",
		"calledMethodRegex": "^((UNKNOWN)|(OTHER))$"
	},
	"replace": {
		"serviceClass": "VREManagement",
		"serviceName": "SmartExecutor",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "VREManagement",
		"serviceNameRegex": "(SmartExecutor)|(smart-executor)",
		"calledMethodRegex": ".*((stop)|(unSchedule)|(DELETE)|(PURGE)).*"
	},
	"replace": {
		"serviceClass": "VREManagement",
		"serviceName": "SmartExecutor",
		"calledMethod": "stop"
	}
},{
	"match": {
		"serviceClassRegex": "Portal",
		"serviceNameRegex": "SocialNetworking",
		"calledMethodRegex": "\/{0,1}rest\/((1|2)\/){0,1}(((people){0,1}(users(\/2){0,1})|comments|full-text-search|hashtags|messages|notifications|people|posts|tokens|vres|vers)\/){0,1}(?<Method>[a-zA-Z\\-]*(\/){0,1})"
	},
	"replace": {
		"serviceClass": "Portal",
		"serviceName": "SocialNetworking",
		"calledMethod": "${Method}"
	}
},{
	"match": {
		"serviceClassRegex": "Portal",
		"serviceNameRegex": "SocialNetworking",
		"calledMethodRegex": "(\/{0,1}(rest))|OTHER|UNKNOWN|\/gcube\/service\/($|&.*)"
	},
	"replace": {
		"serviceClass": "Portal",
		"serviceName": "SocialNetworking",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "(\/workspace\/count)|countById"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "countById"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "(^\/workspace\/item(s){0,1}\/[0-9a-zA-Z\\-_]*\/create\/(FILE|(?!FOLDER).*)$)|createItem\\(FILE\\)|(\/item\/create\/byPath)"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "createItem(FILE)"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "(^\/workspace\/item(s){0,1}\/[0-9a-zA-Z\\-_]*\/create\/FOLDER$)|createItem\\(FOLDER\\)"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "createItem(FOLDER)"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "^\/workspace\/item(s){0,1}\/[0-9a-zA-Z\\-_]*\/download(\/){0,1}$|downloadById"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "downloadById"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "(^\/workspace\/item(s){0,1}\/[0-9a-zA-Z\\-_]*\/(firstcopy|(item(s){0,1})\/.*$))|findChildrenByNamePattern"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "findChildrenByNamePattern"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "^\/(workspace\/){1,2}(item|itam)(s){0,1}\/[0-9a-zA-Z\\-_]*\/acl(s){0,1}(\/){0,1}$|getAcls"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getAcls"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "^\/workspace(\/workspace){0,1}(\/item(s){0,1}){0,1}\/(?!(i$)|count|i{0,1}t(h){0,1}rash|group(s){0,1}|user(s){0,1}|paged|v(re|ere|er)fo(ld|dl)ers{0,1}|((C|c)hi(dl|ld|d)ren))[0-9a-zA-Z\\-_]{1,}(\/){0,1}$|getById"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getById"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "^\/workspace\/group(s){0,1}\/{0,1}.*|getGroups"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getGroups"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "^\/workspace\/item(s){0,1}\/[0-9a-zA-Z\\-_]*\/history(\/){0,1}$|getHistory"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getHistory"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "(^\/workspace\/i{0,1}t(h){0,1}rash\/{0,1}.*)|getTrashFolder|getTrashRootFolder"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getTrashFolder"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "^\/workspace\/user(s){0,1}\/{0,1}.*|getUsers"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getUsers"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "^\/(workspace\/){1,2}item(s){0,1}\/[0-9a-zA-Z\\-_]*\/version(s){0,1}(\/){0,1}$|getVersions"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getVersions"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "\/workspace\/vrefolder\/recents|getVreFolderRecents"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getVreFolderRecents"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "\/workspace\/v(re|ere|er)fo(ld|dl)ers(\/){0,1}|getVreFolders"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getVreFolders"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "\/workspace\/(item(s){0,1}\/){0,1}vrefolder(\/){0,1}|getVreRootFolder"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getVreRootFolder"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "(\/workspace(\/.|\/){0,1})|getWorkspace"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "getWorkspace"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "(listById)|(\/list\/byId)|(\/list\/byPath)|(\/workspace/{0,1}.*\/(get){0,1}(C|c)hi(dl|ld|d)ren)"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "listById"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "(listByIdPaged)|(\/workspace/paged(\/){0,1})"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "listByIdPaged"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "(test-upload\\(FILE\\))|(OTHER)|(UNKNOWN)|(createItem\\(null\\))"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataAccess",
		"serviceNameRegex": "StorageHub",
		"calledMethodRegex": "\/workspace(\/items){0,1}\/publiclink\/.*"
	},
	"replace": {
		"serviceClass": "DataAccess",
		"serviceName": "StorageHub",
		"calledMethod": "resolvePubliclink"
	}
},{
	"match": {
		"serviceClassRegex": "content-management",
		"serviceNameRegex": "storage",
		"calledMethodRegex": ".*"
	},
	"replace": {
		"serviceClass": "content-management",
		"serviceName": "storage",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "Application|DataAnalysis",
		"serviceNameRegex": "TagMe",
		"calledMethodRegex": "^((e\/)|\/){0,1}tag"
	},
	"replace": {
		"serviceClass": "Application",
		"serviceName": "TagMe",
		"calledMethod": "tag"
	}
},{
	"match": {
		"serviceClassRegex": "SDI|DataAnalysis",
		"serviceNameRegex": "Thredds",
		"calledMethodRegex": "^(\/){1}(thredds\/){0,1}(?<Protocol>[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}(?<Collection>[a-zA-Z0-9_\\-%]*(?<!(..\\.nc)))(\/){1}.*(?<!(..\\.nc|.\\.asc|\\.tiff))$"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "Thredds",
		"calledMethod": "METADATA::${Collection}"
	}
},{
	"match": {
		"serviceClassRegex": "SDI|DataAnalysis",
		"serviceNameRegex": "Thredds",
		"calledMethodRegex": "^(\/){1}(thredds\/){0,1}(?<Protocol>[a-zA-Z0-9]*){1}(\/grid){0,1}(\/public\/netcdf\/){1}[^\/]*((?<!(..\\.nc|.\\.asc|\\.tiff))|((\/wfs)|(\/(pointD|d)ataset\\.(html|xml))))$"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "Thredds",
		"calledMethod": "METADATA::OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "SDI|DataAnalysis",
		"serviceNameRegex": "Thredds",
		"calledMethodRegex": "^(?!.*((\/public\/netcdf\/)|(::))).*$"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "Thredds",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "SDI|DataAnalysis",
		"serviceNameRegex": "Thredds",
		"calledMethodRegex": "^(\/){1}(thredds\/){0,1}(?<Protocol>[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}(?<Collection>[a-zA-Z0-9_\\-%]*)(\/){1}(.*\\.(nc|asc|tiff))$"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "Thredds",
		"calledMethod": "${Protocol}::${Collection}"
	}
},{
	"match": {
		"serviceClassRegex": "SDI|DataAnalysis",
		"serviceNameRegex": "Thredds",
		"calledMethodRegex": "^(\/){1}(thredds\/){0,1}(?<Protocol>[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}[^\/]*(\\.(nc|asc|tiff))$"
	},
	"replace": {
		"serviceClass": "SDI",
		"serviceName": "Thredds",
		"calledMethod": "${Protocol}::OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataTransfer",
		"serviceNameRegex": "URIResolver",
		"calledMethodRegex": "^\/{0,1}(UNKNOWN|OTHER|postCataloguePublicLink|resolveCataloguePublicLink|resolveStorageHubPublicLink|dataminer.*|r\/.*)"
	},
	"replace": {
		"serviceClass": "DataTransfer",
		"serviceName": "URIResolver",
		"calledMethod": "OTHER"
	}
},{
	"match": {
		"serviceClassRegex": "DataTransfer",
		"serviceNameRegex": "URIResolver",
		"calledMethodRegex": "^(\/){0,1}(uri-resolver\/){0,1}(?<RedirectType>(ctlg|catalogue|analytics|geonetwork|parthenos_{0,1}registry|shub|storage|knime)).*"
	},
	"replace": {
		"serviceClass": "DataTransfer",
		"serviceName": "URIResolver",
		"calledMethod": "${RedirectType} access"
	}
},{
	"match": {
		"serviceClassRegex": "DataTransfer",
		"serviceNameRegex": "URIResolver",
		"calledMethodRegex": "^(?!(\/){0,1}(r\/){0,1}(UNKNOWN|OTHER|dataminer|postCataloguePublicLink|resolveCataloguePublicLink|resolveStorageHubPublicLink|ctlg(-.){0,1}|catalogue|uri-resolver\/catalogue|analytics|geonetwork|parthenos_{0,1}registry|shub|storage|knime)).*$"
	},
	"replace": {
		"serviceClass": "DataTransfer",
		"serviceName": "URIResolver",
		"calledMethod": "TentativeOfHarvesting"
	}
},{
	"match": {
		"serviceClassRegex": "VREManagement",
		"serviceNameRegex": "WhnManager",
		"calledMethodRegex": "(OTHER)|((\/){0,1}gcube\/vremanagement\/ws\/whnmanager)"
	},
	"replace": {
		"serviceClass": "VREManagement",
		"serviceName": "WhnManager",
		"calledMethod": "OTHER"
	}
}]
