public void jobfunctionroleUseCase() {
	// Prepare for creating a job function role

	// Get all organisations, find owner and delegate
	client.replacePath("/xapi/organisationer/myndigheder");
	Response response = client.get();
	List<OrganisationRefBO> organisationList = readListFromResponse(response, OrganisationRefBO.class);
	OrganisationRefBO organisationRefBoOwner = null;
	OrganisationRefBO organisationRefBoDelegate = null;
	for (OrganisationRefBO org : organisationList) {
		if (org.getCvr().equals(ownerCvr)) {
			organisationRefBoOwner = org;
		} else {
			if (org.getCvr().equals(delegateCvr)) {
				organisationRefBoDelegate = org;
			}
		}
	}

	// Get a list of all "brugervendt" it systems available for the calling organisation
	client.replacePath("/xapi/jobfunktionsroller/brugervendtesystemer");
	response = client.get();

	// Get the specific "brugervendt" it system by UUID
	client.replacePath("/xapi/itsystemer/brugervendtesystemer/" + brugervendtSystemUuid);
	response = client.get();
	XApiBrugervendtSystem brugervendtSystem = readObjectFromResponse(response, XApiBrugervendtSystem.class);

	// Get all of the "brugervendt" it system's roles,
	// pick one (with four data restriction types (text/dynamic, text, single, multi))
	XApiBrugersystemrolleBO brugersystemrolleBO = brugervendtSystem.getBrugervendtSystem().getBrugersystemroller().get(0);

	// Add data restriction values to the job function role's use of the brugersystemrolle
	XApiBrugersystemrolleDataafgraensningBO brugersystemrolleDataafgraensningBO = new XApiBrugersystemrolleDataafgraensningBO();
	brugersystemrolleDataafgraensningBO.setBrugersystemrolleUuid(brugersystemrolleBO.getUuid());

	client.replacePath("/xapi/dataafgraensningstyper/availableforitsystem/" + brugervendtSystem.getUuid());
	response = client.get();
	List<XApiDataafgraensningstypeBO> xApiDataafgraensningstypeBOList = readListFromResponse(response, XApiDataafgraensningstypeBO.class);

	ArrayList<XApiDataafgraensningsvaerdiBO> dataafgraensningsvaerdier = new ArrayList<>();

	List<XApiBrugersystemrolleDataafgraensningstypeBO> dataAfgraensningsTyper = brugersystemrolleBO.getBrugersystemrolleDataafgraensningstyper();

	// A dynamic value
	XApiBrugersystemrolleDataafgraensningstypeBO textDynamic = dataAfgraensningsTyper.stream()
			.filter(t->t.getDataafgraensningstype().getUuid().equals(textDynamicUuid))
			.findFirst()
			.get();
	XApiDataafgraensningsvaerdiBO textDynamicValue = new XApiDataafgraensningsvaerdiBO();
	textDynamicValue.setDynamisk(true);
	textDynamicValue.setDataafgraensningstypeNavn("dataafgraensningstypeTekstDynamisk");
	textDynamicValue.setDataafgraensningstypeEntityId(DAT_ENTITY_ID_1);
	String placeholder = "myValue";
	textDynamicValue.setVaerdi("http://" + organisationRefBoOwner.getRolleDomaene() + "/" + placeholder + "/1/parametric");
	dataafgraensningsvaerdier.add(textDynamicValue);

	// A TEXT value
	XApiBrugersystemrolleDataafgraensningstypeBO text = dataAfgraensningsTyper.stream()
			.filter(t->t.getDataafgraensningstype().getUuid().equals(textUuid))
			.findFirst()
			.get();
	XApiDataafgraensningsvaerdiBO textValue = new XApiDataafgraensningsvaerdiBO();
	textValue.setDynamisk(false);
	textValue.setDataafgraensningstypeNavn("dataafgraensningstypeTekst");
	textValue.setDataafgraensningstypeEntityId(DAT_ENTITY_ID_2);
	textValue.setVaerdi("00.*");
	dataafgraensningsvaerdier.add(textValue);

	// A MULTI value
	XApiBrugersystemrolleDataafgraensningstypeBO multi = dataAfgraensningsTyper.stream()
			.filter(t->t.getDataafgraensningstype().getUuid().equals(multiUuid))
			.findFirst()
			.get();
	XApiDataafgraensningsvaerdiBO multiValue = new XApiDataafgraensningsvaerdiBO();
	multiValue.setDynamisk(false);
	multiValue.setDataafgraensningstypeNavn("dataafgraensningstypeFlereValg");
	multiValue.setDataafgraensningstypeEntityId(DAT_ENTITY_ID_3);
	XApiDataafgraensningstypeBO multiType = xApiDataafgraensningstypeBOList.stream()
			.filter(t -> t.getUuid().equals(multiUuid))
			.findFirst()
			.get();
	String values = multiType.getVaerdiListe().stream()
			.map(XApiDataafgraensningstypeVaerdiBO::getVaerdi)
			.collect(Collectors.joining(","));
	multiValue.setVaerdi(values);
	dataafgraensningsvaerdier.add(multiValue);

	// A SINGLE value
	XApiBrugersystemrolleDataafgraensningstypeBO single = dataAfgraensningsTyper.stream()
			.filter(t->t.getDataafgraensningstype().getUuid().equals(singleUuid))
			.findFirst()
			.get();
	XApiDataafgraensningsvaerdiBO singleValue = new XApiDataafgraensningsvaerdiBO();
	singleValue.setDynamisk(false);
	singleValue.setDataafgraensningstypeNavn("dataafgraensningstypeEtValg");
	singleValue.setDataafgraensningstypeEntityId(DAT_ENTITY_ID_4);

	XApiDataafgraensningstypeBO singleType = xApiDataafgraensningstypeBOList.stream()
			.filter(t -> t.getUuid().equals(singleUuid))
			.findFirst()
			.get();
	singleValue.setVaerdi(singleType.getVaerdiListe().get(0).getVaerdi());
	dataafgraensningsvaerdier.add(singleValue);

	brugersystemrolleDataafgraensningBO.setDataafgraensningsVaerdier(dataafgraensningsvaerdier);
	ArrayList<XApiBrugersystemrolleDataafgraensningBO> brugersystemrolleDataafgraensninger = new ArrayList<>();
	brugersystemrolleDataafgraensninger.add(brugersystemrolleDataafgraensningBO);

	// POST a job function role
	XApiJobfunktionsrolleBO jobfunktionsrolleBO = new XApiJobfunktionsrolleBO();
	String someRole = "someRole";
	jobfunktionsrolleBO.setEntityId("http://" + organisationRefBoOwner.getRolleDomaene() + "/roles/jobrole/" + someRole + "/1");
	jobfunktionsrolleBO.setNavn("Job function role name");
	jobfunktionsrolleBO.setBeskrivelse("Job function role description");
	jobfunktionsrolleBO.setOrganisationCvr(organisationRefBoOwner.getCvr());
	jobfunktionsrolleBO.setDelegeretTilCvr(organisationRefBoDelegate.getCvr());
	jobfunktionsrolleBO.setBrugersystemrolleDataafgraensninger(brugersystemrolleDataafgraensninger);

	// NOTE: See the file "Jobfunktionsrolle-payload.json" for an example of an actual JSON payload
	client.replacePath("/xapi/jobfunktionsroller");
	response = client.post(om.writeValueAsString(jobfunktionsrolleBO));

	// GET job function role list
	response = client.get();
	List<XApiJobfunktionsrolleRef> list = readListFromResponse(response, XApiJobfunktionsrolleRef.class);

	// GET a job function role
	client.replacePath("/xapi/jobfunktionsroller/" + list.get(0).getUuid());
	response = client.get();
	XApiJobfunktionsrolleBO jfr = readObjectFromResponse(response, XApiJobfunktionsrolleBO.class);

	// PUT a job function role
	String aNewDescription = "A new description";
	jfr.setBeskrivelse(aNewDescription);

	client.replacePath("/xapi/jobfunktionsroller/" + jfr.getUuid());
	response = client.put(om.writeValueAsString(jfr));

	client.replacePath("/xapi/jobfunktionsroller/" + list.get(0).getUuid());
	response = client.get();

	jfr = readObjectFromResponse(response, XApiJobfunktionsrolleBO.class);

	// DELETE a job function role
	response = client.delete();
}