text:
PolyU-led research projects secure $27.8m funding from RGC to enhance the community's health and well-being
Research & Innovation Others
PolyU's Professor Alex WAI, Vice President (Research Development) (Center) and researchers introduce the University's health and medical related research projects to the public.
Prof Alex Wai, Vice President (Research Development), PolyU, introduces the University's research projects.
Ten projects led by The Hong Kong Polytechnic University (PolyU) have recently received funding support from the inaugurated Research Impact Fund (RIF) under the Research Grants Council (RGC). Among them, half of them are health-related, covering areas of drug development, detection of scoliosis, myopia control and food safety. This has rightly demonstrated not only the strong research capabilities of the University but also the contribution of its research to the well-being of the community.
The funded health-related research projects include the followings:
Project-in-charge
Funding Amount (HK$ million)
Development of a colistin/adjuvant antimicrobial regimen that exhibits low toxicity and high efficacy in combating multidrug-resistant bacterial pathogens
Professor CHEN Sheng, Professor of Department of Applied Biology and Chemical Technology, PolyU
Early Detection of progressive adolescent idiopathic scoliosis and optimization for non-surgical treatments using novel 3D ultrasound imaging
Professor ZHENG Yongping, Head, Department of Biomedical Engineering and Henry G. Leong Professor in Biomedical Engineering, PolyU
Tackling grand challenges in food safety: a big data and IoT enabled approach
Professor CAO Jiannong, Chair Professor of Distributed and Mobile Computing, Department of Computing, PolyU
Effective of bright light therapy, myopic defocus, atropine and the combinations for controlling myopic eye growth in schoolchildren: a randomized control trial
Professor TO Chi-ho, Head, School of Optometry and Henry G. Leong Professor in Elderly Vision Health, PolyU
Details of the research projects are listed in the Appendix.
"Committed to conducting impactful research for the benefit of the community, PolyU has made healthcare and medical-related research one of our foci of research. From drug development, AI-powered medical images, predictive analytics and diagnosis, to surgical robotic systems and preventive medical intervention, we are leveraging our cross-disciplinary strength to come up with solutions to help prevent and treat illnesses as well as to enhance the health and well-being of the community," said Ir Professor Alex Wai, Vice President (Research Development) of PolyU.
The 10 PolyU projects funded by RIF received a total of HK$65 million, representing one-third in terms of both funding and number of projects of the RIF in 2018/19. Other than the health-related projects, the other projects are related to the development of smart city, transportation and marine reclamation.
*****END****
Ms Michelle Li
Communications and Public Affairs Office
(852) 3400 2128 / 9062 8048
michelle.sp.li@polyu.edu.hk


text:
Narboutivka (, ) est un village au nord de l'oblast de Soumy, en Ukraine, dont la population est d'environ 70 habitants (2001).

Il est situé sur le Ianivka (), une rivière de 14 km de long du réseau fluvial de la Desna.

Le village se trouve dans le nord du raion de Hloukhiv à 30 km au nord-est de la ville chef-lieu Hloukhiv et à 170 km au nord-ouest du chef-lieu de l'oblast, Soumy. il fait partie de la commune rurale de Beresa (Береза).

À proximité, au sud-est de Narboutkiva se trouve l'ancien aérodrome militaire de Tscherwone-Pustohorod ().

Personnalités

 Gueorgui Narbout, né en 1886 à Narboutkiva, peintre, illustrateur, graphiste et recteur de l'Académie ukrainienne des arts visuels et d'architecture.
 Vladimir Narbout, le poète acméisme et frère cadet de Gueorgui, né à Narboutkiva en 1888.

Notes et références

Commune rurale dans l'oblast de Soumy

redpajama_set_name: RedPajamaWikipedia


If you love tiny houses, prepare to swoon for this hotel. Sandwiched between a couple of bigger buildings in Amberg, Germany, it's the perfect little getaway for two.
The red-hued Eh'häusl Hotel measures just eight feet wide, and 570 square feet (or 53 square metres) in total, making it the smallest hotel in the world, according to Guinness World Records.
The mini inn includes a foyer, sitting room, fireside lounge, bathroom, bedroom, and even a whirlpool. The maximum occupancy is two, but that's not the only reason it's the perfect place for a honeymoon or romantic night away.
It turns out, Eh'häusl actually means 'wedding house'. Back in 1728 when it was built, the council of the town required couples intending to marry to produce a certificate of property. To get around this rule, one clever merchant slapped together two walls and a roof in an 8.2-foot alley between two other houses. It worked — and Eh'häusl continued to be sold to subsequent brides and grooms-to-be to serve as their own proof of land ownership.
The charming tradition has since ended, and in 2008, the house was completely refurbished to the cute, cosy retreat it is today. Eh'häusl can be booked for €240 (around £215) a day.


Описание: Office door swinging shut, Hollow thud and clunk of lock as it shuts.
Описание: Heavy wooden door being slammed shut and then locked. Sound of frame rattling a little and bunch of keys jangling while inserted into lock and turned.
Описание: Heavy wooden door being slammed shut. Sound of door frame rattling.
Описание: Trying to turn latch and door handle on office door that is locked and failing to open door.


Pituitary macroadenomas, which are pituitary tumors larger than 1 centimeter, are caused by mutations in the DNA of the cells in the pituitary gland. The exact cause of these mutations is not fully understood. Some people inherit gene mutations that may make them more susceptible to developing pituitary tumors, while others may develop genetic mutations later in life. Called "acquired mutations," these changes can occur due to exposure to radiation or carcinogenic chemicals. Still, many pituitary tumors have no apparent cause.
Pituitary macroadenomas can cause symptoms for two reasons. First, a person with a pituitary macroadenoma may experience symptoms if the tumor makes too much of a certain hormone. When this occurs, the tumor is said to be functional. Functional pituitary macroadenomas can cause a wide range of symptoms depending on the type of hormone it produces, potentially affecting growth, weight, sexual intimacy and more. Second, if the tumor presses on a normal part of the pituitary gland or surrounding nerves like the optic nerve, symptoms may also develop.
Many pituitary macroadenomas do not require treatment. If the tumor is secreting hormones, medication may be prescribed to control the hormone production. However, if the tumor causes severe symptoms that cannot be managed with medication, a patient's physician may recommend surgery to remove it. Most often, a surgeon will remove a pituitary tumor by making an opening in the skull or the upper lip, or by accessing the tumor through the nasal passages.
Radiation therapy may also be used to treat a pituitary macroadenoma. During radiation therapy, high-energy X-rays are delivered directly to the tumor to shrink it. For patients with pituitary tumors, a physician may recommend stereotactic radiotherapy, during which a high dose of radiation is delivered to the tumor once, or a series of smaller doses are delivered over the course of several weeks.
To speak with an oncologist at Moffitt Cancer Center about which pituitary macroadenoma treatment option is best for you, request an appointment by calling 1-888-663-3488 or submitting a new patient registration form online. We do not require referrals.


Provide high quality service which adds value and benefit to your company.
Provide service which is efficient, responsive to your needs, and characterized by high ethical standards.
Identify quality and integrity in the candidates we represent.
We will collaborate with you throughout your project, providing regular updates on how we are progressing. Finally, we will present our findings along with strategic recommendations on the next step actions you may wish to take.
You have decided to cut costs but refuse to reduce competency; leadership that extends to more than one area of expertise is a desirable option.
You know business is on the upswing and you recognize that morale and motivation need improvement.
You have a loyal team that has been with you forever, yet business is suffering. You wonder what to do and still protect the staff you have.


Published 04/25/2019 02:50:32 am at 04/25/2019 02:50:32 am in Tips For Hanging Pictures.
tips for hanging pictures tips for hanging picture frames tips for hanging pictures on the wall nguyen art gallery hang paintings properly.
tips for hanging bathroom pictures doityourselfcom tips for hanging bathroom pictures tips for hanging bathroom pictures, tips for hanging and arranging pictures at the home depot nail hangers wall how hang pictures, chandelier in bathroom pictures libreriaofisierrainfo chandelier in bathroom pictures fancy bath lighting inspiration and tips for hanging a chandelier over the, tips and ideas for hanging pictures and gallery wall layouts as source unknown, how high to hang pictures tips for the perfect gallery wall drywall and nails to use to hang a picture, hang time six key tips for hanging wall art lakeshore hang time six key tips for hanging wall art, home staging tips for hanging pictures in groups cort home staging tips for hanging art, how to hang a picture mustremember tips bob vila tips for hanging pictures, how high to hang pictures tips for the perfect gallery wall shot of tools for hanging a picture, tips for hanging pictures and decorating walls living rich on via pottery barn, best picture hanging tips images in hanging pictures picture hanging tips for your living room.


text:
NBA Standings 2012: Timberwolves Not Quite A Playoff Team Yet
By Travis Miller@JustTMill Jan 22, 2012, 7:30pm CST
Share All sharing options for: NBA Standings 2012: Timberwolves Not Quite A Playoff Team Yet
Nearly a quarter of the way through the season the 2011-12 NBA season the Minnesota Timberwolves find themselves outside of the playoff race, but not far enough out that they can totally write this season off. The Timberwolves are sitting a 7-9 overall, which would be good enough to be in the playoffs in the Eastern Conferece. In the tough Western Conference, where ten teams have a winning record so far, the Timberwolves sit in 11th.
Minnesota is two and a half games between Dallas, the Lakers, and San Antonio for the final playoff spots. Houston and Portland are also ahead of Minnesota at 9-7. Canis Hoopus has a look at the team as they reach the quarter pole:
When I discuss good touches and bad touches, Antoine Walker was way ahead of his time in knowing the proper time and place. 'Toine took almost all of his shots either at the rim or from behind the arc. Easily the two most efficient spots on the floor. And that is what I want to look at with our Wolves. Are we applying 'Toine's logic? Or, despite threes being available as a shot selection, should TWolves players be asked why they're taking so many long twos?
For more on the Minnesota Timberwolves, check out Canis Hoopus. You can also head over to SB Nation's main NBA hub at SBNation.com/NBA.
Timberwolves Turning The Corner

redpajama_set_name: RedPajamaCommonCrawl


text:
Teen Mom 2's Leah Messer Stuns In Mini Skirt During Girls' Night Out With Country Star Gabrielle Mooney
Chris Brown Poses With Ammika Harris & Their Son Aeko, 1, In The Cutest Pic Yet Of Their Little Family
November 25, 2020 6:31AM EST
Meghan Markle Reveals She Suffered A Miscarriage: It's An 'Unbearable Grief'
View Gallery View Gallery 60 Photos.
Alyssa Norwin
Deputy Editor of New York City
In an emotional essay for the 'New York Times,' Meghan Markle opened up about suffering a devastating miscarriage over the summer.
Meghan Markle was pregnant with her second child earlier this year, but suffered a devastating miscarriage in July. Prince Harry's wife shared her story by writing an op-ed for the New York Times, which was published on Nov. 25. She revealed that was changing her son, Archie's, diaper when she lost her second baby.
"I dropped to the floor," she recalled. "[I] sensed that something was not right. I knew, as I clutched my firstborn child, that I was losing my second." Meghan and Harry rushed to the hospital. While "[staring] at the cold white walls," Meghan remembered "[trying] to imagine how [they'd] heal. She added, "Losing a child means carrying an almost unbearable grief, experienced by many but talked about by few."
Meghan Markle and Prince Harry on a stroll in the rain. (MEGA)
Meghan wrote the op-ed to encourage readers to check in on others, and make sure they are simply 'doing ok.' She recalled one of her first times in New York City when she saw a woman crying on the sidewalk and asked her cab driver if they should check on her. He assured her that someone would stop and ask the woman if she was alright.
"Now, all these years later, in isolation and lockdown, grieving the loss of a child, the loss of my country's shared belief in what's true, I think of that woman in New York," Meghan admitted. "What if no one stopped? What if no one saw her suffering? What if no one helped? I wish I could go back and ask my cab driver to pull over. This, I realize, is the danger of siloed living — where moments sad, scary or sacrosanct are all lived out alone. There is no one stopping to ask, 'Are you okay?'"
She also opened up about the topic of miscarriage being 'taboo' and why not talking about it does not help with healing. "Some have bravely shared their stories; they have opened the door, knowing that when one person speaks truth, it gives license for all of us to do the same," Meghan continued. "We have learned that when people ask how any of us are doing, and when they really listen to the answer, with an open heart and mind, the load of grief often becomes lighter — for all of us. In being invited to share our pain, together we take the first steps toward healing."
Meghan and Harry got married in May 2018 and welcomed their son Archie one year later. At the beginning of 2020, they announced that they would be leaving their royal duties to move to North America. After spending several months in Canada, they relocated to California, where they have been living ever since. Meghan and Harry have kept an extremely low profile since their move to the United States.
Meghan Markle	Prince Harry


text:
One With
Limited Edition Print by Judy Larson
Giclée Canvas
20 × 24 in
Handsigned by the Artist
Iyuptala: Ee-yoo-P'TAH-lah. "The Native American's relationship with the elements, the earth and its inhabitants were viewed as 'one with.' He moved through nature as he did with his animals, not as an owner or as a subduer, but as an equal, a companion, a brother. Total trust existed between the Native American and his horse, with whom he was 'one with.' They moved together as one. They understood each other. They listened to each other. So powerful was this understanding, this respect, that the very rocks in 'One With' speak of this relationship. Nature, the animal and the Native American are as one unit. There is no question. The Native American and his horse belonged here, "one with" each other, with their Creator and with His creation."
These are the words of artist Judy Larson whose eloquence is clearly not limited to her art. Judy's passion has earned her the standing as one of America's leading artists. Her technique, the painstakingly detailed process of scratchboard, lends itself wonderfully to her art
Limited Edition – Giclée Paper – 18 x 20.5
Art by Judy Larson
Long Ago and Far Away
Giclée Canvas, 8 H x 12 W in
Scratchboard/Acrylic, 8.5 H x 5.5 W in
Giclée Canvas, 5.5 H x 10 W in
Barn Swallow in Window
Oil on Board, 20 H x 18 W in
Spirit of the Chase
Todd White
Sunset, Open Water
Acrylic on Canvas, 8 H x 14 W in
$857 CAD Add to cart
Hear No Evil, See No Evil, Speak No Evil
Oil on Panel, 8 H x 14 W in


text:
package com.evolveum.midpoint.model.intest;

import static com.evolveum.midpoint.test.IntegrationTestTools.display;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue;

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.prism.path.ItemPath;

import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.DirtiesContext.ClassMode;
import org.springframework.test.context.ContextConfiguration;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;

import com.evolveum.icf.dummy.resource.DummyAccount;
import com.evolveum.icf.dummy.resource.DummyResource;
import com.evolveum.midpoint.model.intest.sync.AbstractSynchronizationStoryTest;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.delta.PropertyDelta;
import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.schema.constants.MidPointConstants;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.MiscSchemaUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.test.DummyResourceContoller;
import com.evolveum.midpoint.test.IntegrationTestTools;
import com.evolveum.midpoint.test.util.TestUtil;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentPolicyEnforcementType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TimeIntervalStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;

/**
 * @author semancik
 *
 */
@ContextConfiguration(locations = {"classpath:ctx-model-intest-test-main.xml"})
@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
public class TestActivation extends AbstractInitializedModelIntegrationTest {

	private static final File TEST_DIR = new File("src/test/resources/activation");

	protected static final File RESOURCE_DUMMY_KHAKI_FILE = new File(TEST_DIR, "resource-dummy-khaki.xml");
	protected static final String RESOURCE_DUMMY_KHAKI_OID = "10000000-0000-0000-0000-0000000a1004";
	protected static final String RESOURCE_DUMMY_KHAKI_NAME = "khaki";
	protected static final String RESOURCE_DUMMY_KHAKI_NAMESPACE = MidPointConstants.NS_RI;

	protected static final String ACCOUNT_MANCOMB_DUMMY_USERNAME = "mancomb";
	private static final Date ACCOUNT_MANCOMB_VALID_FROM_DATE = MiscUtil.asDate(2011, 2, 3, 4, 5, 6);
	private static final Date ACCOUNT_MANCOMB_VALID_TO_DATE = MiscUtil.asDate(2066, 5, 4, 3, 2, 1);

	private String accountOid;
	private String accountRedOid;
    private String accountYellowOid;
	private XMLGregorianCalendar lastValidityChangeTimestamp;
	private String accountMancombOid;
	private String userMancombOid;
	private XMLGregorianCalendar manana;

	protected DummyResource dummyResourceKhaki;
	protected DummyResourceContoller dummyResourceCtlKhaki;
	protected ResourceType resourceDummyKhakiType;
	protected PrismObject<ResourceType> resourceDummyKhaki;

	@Override
	public void initSystem(Task initTask, OperationResult initResult)
			throws Exception {
		super.initSystem(initTask, initResult);

		dummyResourceCtlKhaki = DummyResourceContoller.create(RESOURCE_DUMMY_KHAKI_NAME, resourceDummyKhaki);
		dummyResourceCtlKhaki.extendSchemaPirate();
		dummyResourceKhaki = dummyResourceCtlKhaki.getDummyResource();
		resourceDummyKhaki = importAndGetObjectFromFile(ResourceType.class, RESOURCE_DUMMY_KHAKI_FILE, RESOURCE_DUMMY_KHAKI_OID, initTask, initResult);
		resourceDummyKhakiType = resourceDummyKhaki.asObjectable();
		dummyResourceCtlKhaki.setResource(resourceDummyKhaki);
	}

	@Test
    public void test050CheckJackEnabled() throws Exception {
        TestUtil.displayTestTile(this, "test050CheckJackEnabled");

        // GIVEN, WHEN
        // this happens during test initialization when user-jack.xml is added

        // THEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + ".test050CheckJackEnabled");
        OperationResult result = task.getResult();

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

		assertAdministrativeStatusEnabled(userJack);
		// Cannot assert validity or effective status here. The user was added through repo and was not recomputed yet.
	}

	@Test
    public void test051ModifyUserJackDisable() throws Exception {
        TestUtil.displayTestTile(this, "test051ModifyUserJackDisable");

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + ".test051ModifyUserJackDisable");
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        XMLGregorianCalendar start = clock.currentTimeXMLGregorianCalendar();

		// WHEN
        modifyUserReplace(USER_JACK_OID, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, task, result, ActivationStatusType.DISABLED);

		// THEN
        XMLGregorianCalendar end = clock.currentTimeXMLGregorianCalendar();
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

		assertAdministrativeStatusDisabled(userJack);
		assertValidity(userJack, null);
		assertEffectiveStatus(userJack, ActivationStatusType.DISABLED);
		assertDisableTimestampFocus(userJack, start, end);

		IntegrationTestTools.assertModifyTimestamp(userJack, start, end);
	}

	@Test
    public void test052ModifyUserJackEnable() throws Exception {
        TestUtil.displayTestTile(this, "test052ModifyUserJackEnable");

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + ".test052ModifyUserJackEnable");
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        XMLGregorianCalendar start = clock.currentTimeXMLGregorianCalendar();

		// WHEN
        modifyUserReplace(USER_JACK_OID, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, task, result, ActivationStatusType.ENABLED);

		// THEN
        XMLGregorianCalendar end = clock.currentTimeXMLGregorianCalendar();
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

		assertAdministrativeStatusEnabled(userJack);
		assertValidity(userJack, null);
		assertEffectiveStatus(userJack, ActivationStatusType.ENABLED);
		assertEnableTimestampFocus(userJack, start, end);

		IntegrationTestTools.assertModifyTimestamp(userJack, start, end);
	}

	@Test
    public void test100ModifyUserJackAssignAccount() throws Exception {
		final String TEST_NAME = "test100ModifyUserJackAssignAccount";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<ObjectDelta<? extends ObjectType>>();
        ObjectDelta<UserType> accountAssignmentUserDelta = createAccountAssignmentUserDelta(USER_JACK_OID, RESOURCE_DUMMY_OID, null, true);
        deltas.add(accountAssignmentUserDelta);

        dummyAuditService.clear();
        XMLGregorianCalendar start = clock.currentTimeXMLGregorianCalendar();

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		XMLGregorianCalendar end = clock.currentTimeXMLGregorianCalendar();
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

		PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack);
        accountOid = getSingleLinkOid(userJack);

		// Check shadow
        PrismObject<ShadowType> accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result);
        display("Shadow (repo)", accountShadow);
        assertDummyAccountShadowRepo(accountShadow, accountOid, "jack");
        IntegrationTestTools.assertCreateTimestamp(accountShadow, start, end);
        assertEnableTimestampShadow(accountShadow, start, end);

        // Check account
        PrismObject<ShadowType> accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result);
        display("Shadow (model)", accountModel);
        assertDummyAccountShadowModel(accountModel, accountOid, "jack", "Jack Sparrow");
        IntegrationTestTools.assertCreateTimestamp(accountModel, start, end);
        assertEnableTimestampShadow(accountModel, start, end);

        // Check account in dummy resource
        assertDummyAccount("jack", "Jack Sparrow", true);

        assertDummyEnabled("jack");

        IntegrationTestTools.assertModifyTimestamp(userJack, start, end);

        // Check audit
        display("Audit", dummyAuditService);
        dummyAuditService.assertRecords(2);
        dummyAuditService.assertSimpleRecordSanity();
        dummyAuditService.assertAnyRequestDeltas();
        dummyAuditService.assertExecutionDeltas(3);
        dummyAuditService.asserHasDelta(ChangeType.MODIFY, UserType.class);
        dummyAuditService.asserHasDelta(ChangeType.ADD, ShadowType.class);
        dummyAuditService.assertTarget(USER_JACK_OID);
        dummyAuditService.assertExecutionSuccess();
        Collection<ObjectDeltaOperation<? extends ObjectType>> executionDeltas = dummyAuditService.getExecutionDeltas();
        boolean found = false;
        for (ObjectDeltaOperation<? extends ObjectType> executionDelta: executionDeltas) {
        	ObjectDelta<? extends ObjectType> objectDelta = executionDelta.getObjectDelta();
        	if (objectDelta.getObjectTypeClass() == ShadowType.class) {
        		PropertyDelta<Object> enableTimestampDelta = objectDelta.findPropertyDelta(new ItemPath(ShadowType.F_ACTIVATION, ActivationType.F_ENABLE_TIMESTAMP));
        		display("Audit enableTimestamp delta", enableTimestampDelta);
        		assertNotNull("EnableTimestamp delta vanished from audit record", enableTimestampDelta);
        		found = true;
        	}
        }
        assertTrue("Shadow delta not found", found);
	}

	@Test
    public void test101ModifyUserJackDisable() throws Exception {
		final String TEST_NAME = "test101ModifyUserJackDisable";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);
        XMLGregorianCalendar startTime = clock.currentTimeXMLGregorianCalendar();

		// WHEN
        modifyUserReplace(USER_JACK_OID, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, task, result, ActivationStatusType.DISABLED);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);
        XMLGregorianCalendar endTime = clock.currentTimeXMLGregorianCalendar();

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

		assertAdministrativeStatusDisabled(userJack);
		assertDummyDisabled("jack");
		assertDisableTimestampFocus(userJack, startTime, endTime);

		String accountOid = getLinkRefOid(userJack, RESOURCE_DUMMY_OID);
		PrismObject<ShadowType> accountShadow = getShadowModel(accountOid);
		assertDisableTimestampShadow(accountShadow, startTime, endTime);
		assertDisableReasonShadow(accountShadow, SchemaConstants.MODEL_DISABLE_REASON_MAPPED);
	}

	@Test
    public void test102ModifyUserJackEnable() throws Exception {
        TestUtil.displayTestTile(this, "test102ModifyUserJackEnable");

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + ".test052ModifyUserJackEnable");
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);
        XMLGregorianCalendar startTime = clock.currentTimeXMLGregorianCalendar();

		// WHEN
        modifyUserReplace(USER_JACK_OID, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, task, result, ActivationStatusType.ENABLED);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);
        XMLGregorianCalendar endTime = clock.currentTimeXMLGregorianCalendar();

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

		assertAdministrativeStatusEnabled(userJack);
		assertDummyEnabled("jack");
		assertEnableTimestampFocus(userJack, startTime, endTime);
	}

	/**
	 * Modify account activation. User's activation should be unchanged
	 */
	@Test
    public void test111ModifyAccountJackDisable() throws Exception {
        TestUtil.displayTestTile(this, "test111ModifyAccountJackDisable");

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + ".test111ModifyAccountJackDisable");
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);
        XMLGregorianCalendar startTime = clock.currentTimeXMLGregorianCalendar();

		// WHEN
        modifyAccountShadowReplace(accountOid, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, task, result, ActivationStatusType.DISABLED);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);
        XMLGregorianCalendar endTime = clock.currentTimeXMLGregorianCalendar();

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

		String accountOid = getLinkRefOid(userJack, RESOURCE_DUMMY_OID);
		PrismObject<ShadowType> accountShadow = getShadowModel(accountOid);
		assertAdministrativeStatusDisabled(accountShadow);
		assertDisableTimestampShadow(accountShadow, startTime, endTime);
		assertDisableReasonShadow(accountShadow, SchemaConstants.MODEL_DISABLE_REASON_EXPLICIT);

		assertAdministrativeStatusEnabled(userJack);
		assertDummyDisabled("jack");
	}

	/**
	 * Make sure that recompute does not destroy anything.
	 */
	@Test
    public void test112UserJackRecompute() throws Exception {
		final String TEST_NAME = "test112UserJackRecompute";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);
        XMLGregorianCalendar startTime = clock.currentTimeXMLGregorianCalendar();
        dummyAuditService.clear();

		// WHEN
        recomputeUser(USER_JACK_OID, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("recompute result", result);

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

		String accountOid = getLinkRefOid(userJack, RESOURCE_DUMMY_OID);
		PrismObject<ShadowType> accountShadow = getShadowModel(accountOid);
		assertAdministrativeStatusDisabled(accountShadow);
		assertDisableTimestampShadow(accountShadow, null, startTime);
		assertDisableReasonShadow(accountShadow, SchemaConstants.MODEL_DISABLE_REASON_EXPLICIT);

		assertAdministrativeStatusEnabled(userJack);
		assertDummyDisabled("jack");

		// Check audit
        display("Audit", dummyAuditService);
        dummyAuditService.assertNoRecord();
//        dummyAuditService.assertRecords(2);
//        dummyAuditService.assertSimpleRecordSanity();
//        dummyAuditService.assertAnyRequestDeltas();
//        dummyAuditService.assertExecutionDeltas(0);
//        dummyAuditService.assertExecutionSuccess();
	}

	/**
	 * Re-enabling the user should enable the account as well. Even if the user is already enabled.
	 */
	@Test
    public void test114ModifyUserJackEnable() throws Exception {
		final String TEST_NAME = "test114ModifyUserJackEnable";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);
        XMLGregorianCalendar startTime = clock.currentTimeXMLGregorianCalendar();

		// WHEN
        modifyUserReplace(USER_JACK_OID, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, task, result, ActivationStatusType.ENABLED);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);
        XMLGregorianCalendar endTime = clock.currentTimeXMLGregorianCalendar();

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

		assertAdministrativeStatusEnabled(userJack);
		assertDummyEnabled("jack");
		assertEnableTimestampFocus(userJack, startTime, endTime);

		assertAccounts(USER_JACK_OID, 1);
        PrismObject<ShadowType> account = getShadowModel(accountOid);
        assertAccountShadowModel(account, accountOid, ACCOUNT_JACK_DUMMY_USERNAME, resourceDummyType);
        assertAdministrativeStatusEnabled(account);
        assertEnableTimestampShadow(account, startTime, endTime);
	}

	/**
	 * Modify both user and account activation. As password outbound mapping is weak the user should have its own state
	 * and account should have its own state.
	 */
	@Test
    public void test115ModifyJackActivationUserAndAccount() throws Exception {
		final String TEST_NAME = "test115ModifyJackActivationUserAndAccount";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        ObjectDelta<UserType> userDelta = createModifyUserReplaceDelta(USER_JACK_OID, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.ENABLED);
        ObjectDelta<ShadowType> accountDelta = createModifyAccountShadowReplaceDelta(accountOid, resourceDummy,
        		ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.DISABLED);

        Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(userDelta, accountDelta);

        XMLGregorianCalendar startTime = clock.currentTimeXMLGregorianCalendar();

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);
        XMLGregorianCalendar endTime = clock.currentTimeXMLGregorianCalendar();

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");
		assertEnableTimestampFocus(userJack, startTime, endTime);
		assertAdministrativeStatusEnabled(userJack);

		assertDummyDisabled("jack");
		assertAccounts(USER_JACK_OID, 1);
        PrismObject<ShadowType> account = getShadowModel(accountOid);
        assertAccountShadowModel(account, accountOid, ACCOUNT_JACK_DUMMY_USERNAME, resourceDummyType);
        assertAdministrativeStatusDisabled(account);
        assertDisableTimestampShadow(account, startTime, endTime);
        assertDisableReasonShadow(account, SchemaConstants.MODEL_DISABLE_REASON_EXPLICIT);
	}

	/**
	 * Add red dummy resource to the mix. This would be fun.
	 */
	@Test
    public void test120ModifyUserJackAssignAccountDummyRed() throws Exception {
        TestUtil.displayTestTile(this, "test120ModifyUserJackAssignAccountDummyRed");

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + ".test120ModifyUserJackAssignAccountDummyRed");
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<ObjectDelta<? extends ObjectType>>();
        ObjectDelta<UserType> accountAssignmentUserDelta = createAccountAssignmentUserDelta(USER_JACK_OID, RESOURCE_DUMMY_RED_OID, null, true);
        deltas.add(accountAssignmentUserDelta);
        XMLGregorianCalendar startTime = clock.currentTimeXMLGregorianCalendar();

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);
        XMLGregorianCalendar endTime = clock.currentTimeXMLGregorianCalendar();

		PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack);
		assertAccounts(USER_JACK_OID, 2);
		accountRedOid = getLinkRefOid(userJack, RESOURCE_DUMMY_RED_OID);

		PrismObject<ShadowType> accountRedRepo = repositoryService.getObject(ShadowType.class, accountRedOid, null, result);
		display("Account red (repo)", accountRedRepo);
        assertEnableTimestampShadow(accountRedRepo, startTime, endTime);

        PrismObject<ShadowType> accountRed = getShadowModel(accountRedOid);
        display("Account red (model)", accountRed);
        assertAccountShadowModel(accountRed, accountRedOid, ACCOUNT_JACK_DUMMY_USERNAME, resourceDummyRedType);
        assertAdministrativeStatusEnabled(accountRed);
        assertEnableTimestampShadow(accountRed, startTime, endTime);

        // Check account in dummy resource
        assertDummyAccount(RESOURCE_DUMMY_RED_NAME, "jack", "Jack Sparrow", true);

        assertAdministrativeStatusEnabled(userJack);
		assertDummyDisabled("jack");
		assertDummyEnabled(RESOURCE_DUMMY_RED_NAME, "jack");

	}

	/**
	 * Modify both user and account activation. Red dummy has a strong mapping. User change should override account
	 * change.
	 */
	@Test
    public void test121ModifyJackUserAndAccountRed() throws Exception {
		final String TEST_NAME = "test121ModifyJackUserAndAccountRed";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        ObjectDelta<UserType> userDelta = createModifyUserReplaceDelta(USER_JACK_OID, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.DISABLED);

        ObjectDelta<ShadowType> accountDelta = createModifyAccountShadowReplaceDelta(accountRedOid, resourceDummy,
        		ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.ENABLED);

        Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(userDelta, accountDelta);
        XMLGregorianCalendar startTime = clock.currentTimeXMLGregorianCalendar();

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);
        XMLGregorianCalendar endTime = clock.currentTimeXMLGregorianCalendar();

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

        assertAdministrativeStatusDisabled(userJack);
		assertDummyDisabled("jack");
		assertDummyDisabled(RESOURCE_DUMMY_RED_NAME, "jack");

		assertAccounts(USER_JACK_OID, 2);
        accountRedOid = getLinkRefOid(userJack, RESOURCE_DUMMY_RED_OID);
        PrismObject<ShadowType> accountRed = getShadowModel(accountRedOid);
        assertAccountShadowModel(accountRed, accountRedOid, ACCOUNT_JACK_DUMMY_USERNAME, resourceDummyRedType);
        assertAdministrativeStatusDisabled(accountRed);
        assertDisableTimestampShadow(accountRed, startTime, endTime);
        assertDisableReasonShadow(accountRed, SchemaConstants.MODEL_DISABLE_REASON_MAPPED);
	}

	@Test
    public void test130ModifyAccountDefaultAndRed() throws Exception {
        TestUtil.displayTestTile(this, "test130ModifyAccountDefaultAndRed");

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + ".test121ModifyJackPasswordUserAndAccountRed");
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        ObjectDelta<ShadowType> accountDeltaDefault = createModifyAccountShadowReplaceDelta(accountOid,
        		resourceDummy, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.ENABLED);
        ObjectDelta<ShadowType> accountDeltaRed = createModifyAccountShadowReplaceDelta(accountRedOid,
        		resourceDummyRed, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.ENABLED);
		Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(accountDeltaDefault, accountDeltaRed);

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

        assertAdministrativeStatusDisabled(userJack);
		assertDummyEnabled("jack");
		assertDummyEnabled(RESOURCE_DUMMY_RED_NAME, "jack");
	}

	/**
	 * Let's make a clean slate for the next test
	 */
	@Test
    public void test138ModifyJackEnabled() throws Exception {
		final String TEST_NAME = "test138ModifyJackEnabled";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        ObjectDelta<UserType> userDelta = createModifyUserReplaceDelta(USER_JACK_OID, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.ENABLED);

        Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(userDelta);

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack, "Jack Sparrow");

        assertAdministrativeStatusEnabled(userJack);
		assertDummyEnabled("jack");
		assertDummyEnabled(RESOURCE_DUMMY_RED_NAME, "jack");
	}

	/**
	 * Red dummy resource disables account instead of deleting it.
	 */
	@Test
    public void test139ModifyUserJackUnAssignAccountDummyRed() throws Exception {
		final String TEST_NAME = "test139ModifyUserJackUnAssignAccountDummyRed";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<ObjectDelta<? extends ObjectType>>();
        ObjectDelta<UserType> accountAssignmentUserDelta = createAccountAssignmentUserDelta(USER_JACK_OID, RESOURCE_DUMMY_RED_OID, null, false);
        deltas.add(accountAssignmentUserDelta);

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

		PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack);
		assertAccounts(USER_JACK_OID, 2);
        accountRedOid = getLinkRefOid(userJack, RESOURCE_DUMMY_RED_OID);
        PrismObject<ShadowType> accountRed = getShadowModel(accountRedOid);
        assertAccountShadowModel(accountRed, accountRedOid, ACCOUNT_JACK_DUMMY_USERNAME, resourceDummyRedType);
        assertAdministrativeStatusDisabled(accountRed);
        assertDisableReasonShadow(accountRed, SchemaConstants.MODEL_DISABLE_REASON_DEPROVISION);

        // Check account in dummy resource
        assertDummyAccount(RESOURCE_DUMMY_RED_NAME, ACCOUNT_JACK_DUMMY_USERNAME, "Jack Sparrow", false);

        assertAdministrativeStatusEnabled(userJack);
        assertDummyEnabled("jack");
		assertDummyDisabled(RESOURCE_DUMMY_RED_NAME, ACCOUNT_JACK_DUMMY_USERNAME);
	}

    /**
     * Assign yellow account.
     */
    @Test
    public void test150ModifyUserJackAssignYellowAccount() throws Exception {
        final String TEST_NAME = "test150ModifyUserJackAssignYellowAccount";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<ObjectDelta<? extends ObjectType>>();
        ObjectDelta<UserType> accountAssignmentUserDelta = createAccountAssignmentUserDelta(USER_JACK_OID, RESOURCE_DUMMY_YELLOW_OID, null, true);
        deltas.add(accountAssignmentUserDelta);

        XMLGregorianCalendar start = clock.currentTimeXMLGregorianCalendar();

        // WHEN
        modelService.executeChanges(deltas, null, task, result);

        // THEN
        XMLGregorianCalendar end = clock.currentTimeXMLGregorianCalendar();
        result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
        display("User after change execution", userJack);
        assertUserJack(userJack);
        accountYellowOid = getLinkRefOid(userJack, RESOURCE_DUMMY_YELLOW_OID);

        // Check account in dummy resource
        assertDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, "jack", "Jack Sparrow", true);

        // Check shadow
        PrismObject<ShadowType> accountShadowYellow = getShadowModel(accountYellowOid);
        assertAccountShadowModel(accountShadowYellow, accountYellowOid, ACCOUNT_JACK_DUMMY_USERNAME, resourceDummyYellowType);
        assertAdministrativeStatusEnabled(accountShadowYellow);
        IntegrationTestTools.assertCreateTimestamp(accountShadowYellow, start, end);
        assertEnableTimestampShadow(accountShadowYellow, start, end);

        // Check user
        IntegrationTestTools.assertModifyTimestamp(userJack, start, end);
        assertAdministrativeStatusEnabled(userJack);
    }

    /**
     * Disable default & yellow accounts and check them after reconciliation.
     */
    @Test(enabled = true)
    public void test152ModifyAccountsJackDisable() throws Exception {
        final String TEST_NAME = "test152ModifyAccountsJackDisable";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        // WHEN
        ObjectDelta<ShadowType> dummyDelta = createModifyAccountShadowReplaceDelta(accountOid, null, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.DISABLED);
        ObjectDelta<ShadowType> yellowDelta = createModifyAccountShadowReplaceDelta(accountYellowOid, null, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.DISABLED);
        Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(dummyDelta, yellowDelta);

        modelService.executeChanges(deltas, null, task, result);

        // THEN
        result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
        display("User after change execution", userJack);
        assertUserJack(userJack);

        checkAdminStatusFor15x(userJack, true, false, false);

        // WHEN (2) - now let's do a reconciliation on both resources

        ObjectDelta innocentDelta = createModifyUserReplaceDelta(USER_JACK_OID, UserType.F_LOCALITY,
        		userJack.asObjectable().getLocality().toPolyString());
        modelService.executeChanges(MiscSchemaUtil.createCollection(innocentDelta), ModelExecuteOptions.createReconcile(), task, result);

        // THEN

        result.computeStatus();
        TestUtil.assertSuccess("executeChanges result (after reconciliation)", result);

        checkAdminStatusFor15x(userJack, true, false, true);        // yellow has a STRONG mapping for adminStatus, therefore it should be replaced by the user's adminStatus
    }

    /**
     * Disable default & yellow accounts and check them after reconciliation.
     */
    @Test(enabled = true)
    public void test153ModifyAccountsJackEnable() throws Exception {
        final String TEST_NAME = "test153ModifyAccountsJackEnable";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        // WHEN
        ObjectDelta<ShadowType> dummyDelta = createModifyAccountShadowReplaceDelta(accountOid, null, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.ENABLED);
        ObjectDelta<ShadowType> yellowDelta = createModifyAccountShadowReplaceDelta(accountYellowOid, null, ACTIVATION_ADMINISTRATIVE_STATUS_PATH, ActivationStatusType.ENABLED);
        Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(dummyDelta, yellowDelta);

        modelService.executeChanges(deltas, null, task, result);

        // THEN
        result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

        PrismObject<UserType> userJack = getUser(USER_JACK_OID);
        display("User after change execution", userJack);
        assertUserJack(userJack);

        checkAdminStatusFor15x(userJack, true, true, true);

        // WHEN (2) - now let's do a reconciliation on both resources

        ObjectDelta innocentDelta = createModifyUserReplaceDelta(USER_JACK_OID, UserType.F_LOCALITY,
        		userJack.asObjectable().getLocality().toPolyString());
        modelService.executeChanges(MiscSchemaUtil.createCollection(innocentDelta), ModelExecuteOptions.createReconcile(), task, result);

        // THEN

        result.computeStatus();
        TestUtil.assertSuccess("executeChanges result (after reconciliation)", result);

        checkAdminStatusFor15x(userJack, true, true, true);
    }

    private void checkAdminStatusFor15x(PrismObject user, boolean userStatus, boolean accountStatus, boolean accountStatusYellow) throws Exception {
        PrismObject<ShadowType> account = getShadowModel(accountOid);
        PrismObject<ShadowType> accountYellow = getShadowModel(accountYellowOid);

        assertAccountShadowModel(account, accountOid, ACCOUNT_JACK_DUMMY_USERNAME, resourceDummyType);
        assertAdministrativeStatus(account, accountStatus ? ActivationStatusType.ENABLED : ActivationStatusType.DISABLED);
        if (!accountStatus) {
        	assertDisableReasonShadow(account, SchemaConstants.MODEL_DISABLE_REASON_EXPLICIT);
        }

        assertAccountShadowModel(accountYellow, accountYellowOid, ACCOUNT_JACK_DUMMY_USERNAME, resourceDummyYellowType);
        assertAdministrativeStatus(accountYellow, accountStatusYellow ? ActivationStatusType.ENABLED : ActivationStatusType.DISABLED);
        if (!accountStatusYellow) {
        	assertDisableReasonShadow(accountYellow, SchemaConstants.MODEL_DISABLE_REASON_EXPLICIT);
        }

        assertAdministrativeStatus(user, userStatus ? ActivationStatusType.ENABLED : ActivationStatusType.DISABLED);

        // Check account in dummy resource
        assertDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME, "Jack Sparrow", accountStatus);
        assertDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, "Jack Sparrow", accountStatusYellow);
    }

    /**
     * Khaki resource has simulated activation capability.
     */
	@Test
    public void test160ModifyUserJackAssignAccountKhaki() throws Exception {
		final String TEST_NAME = "test160ModifyUserJackAssignAccountKhaki";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<ObjectDelta<? extends ObjectType>>();
        ObjectDelta<UserType> accountAssignmentUserDelta = createAccountAssignmentUserDelta(USER_JACK_OID, RESOURCE_DUMMY_KHAKI_OID, null, true);
        deltas.add(accountAssignmentUserDelta);

        dummyAuditService.clear();
        XMLGregorianCalendar start = clock.currentTimeXMLGregorianCalendar();

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		XMLGregorianCalendar end = clock.currentTimeXMLGregorianCalendar();
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

		PrismObject<UserType> userJack = getUser(USER_JACK_OID);
		display("User after change execution", userJack);
		assertUserJack(userJack);
		String accountOid = getLinkRefOid(userJack, RESOURCE_DUMMY_KHAKI_OID);

		// Check shadow
        PrismObject<ShadowType> accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result);
        display("Shadow (repo)", accountShadow);
        assertAccountShadowRepo(accountShadow, accountOid, "jack", resourceDummyKhakiType);
        IntegrationTestTools.assertCreateTimestamp(accountShadow, start, end);
        assertEnableTimestampShadow(accountShadow, start, end);

        // Check account
        PrismObject<ShadowType> accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result);
        display("Shadow (model)", accountModel);
        assertAccountShadowModel(accountModel, accountOid, "jack", resourceDummyKhakiType);
        IntegrationTestTools.assertCreateTimestamp(accountModel, start, end);
        assertEnableTimestampShadow(accountModel, start, end);

        // Check account in dummy resource
        assertDummyAccount(RESOURCE_DUMMY_KHAKI_NAME, "jack", "Jack Sparrow", true);

        assertDummyEnabled(RESOURCE_DUMMY_KHAKI_NAME, "jack");

        IntegrationTestTools.assertModifyTimestamp(userJack, start, end);

        // Check audit
        display("Audit", dummyAuditService);
        dummyAuditService.assertRecords(2);
        dummyAuditService.assertSimpleRecordSanity();
        dummyAuditService.assertAnyRequestDeltas();
        dummyAuditService.assertExecutionDeltas(3);
        dummyAuditService.asserHasDelta(ChangeType.MODIFY, UserType.class);
        dummyAuditService.asserHasDelta(ChangeType.ADD, ShadowType.class);
        dummyAuditService.assertTarget(USER_JACK_OID);
        dummyAuditService.assertExecutionSuccess();
        Collection<ObjectDeltaOperation<? extends ObjectType>> executionDeltas = dummyAuditService.getExecutionDeltas();
        boolean found = false;
        for (ObjectDeltaOperation<? extends ObjectType> executionDelta: executionDeltas) {
        	ObjectDelta<? extends ObjectType> objectDelta = executionDelta.getObjectDelta();
        	if (objectDelta.getObjectTypeClass() == ShadowType.class) {
        		PropertyDelta<Object> enableTimestampDelta = objectDelta.findPropertyDelta(new ItemPath(ShadowType.F_ACTIVATION, ActivationType.F_ENABLE_TIMESTAMP));
        		display("Audit enableTimestamp delta", enableTimestampDelta);
        		assertNotNull("EnableTimestamp delta vanished from audit record", enableTimestampDelta);
        		found = true;
        	}
        }
        assertTrue("Shadow delta not found", found);
	}

    @Test
    public void test199DeleteUserJack() throws Exception {
		final String TEST_NAME = "test199DeleteUserJack";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<ObjectDelta<? extends ObjectType>>();
        ObjectDelta<UserType> userDelta = ObjectDelta.createDeleteDelta(UserType.class, USER_JACK_OID, prismContext);
        deltas.add(userDelta);

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

        try {
			PrismObject<UserType> userJack = getUser(USER_JACK_OID);
			AssertJUnit.fail("Jack is still alive!");
		} catch (ObjectNotFoundException ex) {
			// This is OK
		}

        // Check that the accounts are gone
        assertNoDummyAccount(null, "jack");
        assertNoDummyAccount(RESOURCE_DUMMY_RED_NAME, "jack");
	}

	@Test
    public void test200AddUserLargo() throws Exception {
		final String TEST_NAME = "test200AddUserLargo";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        long startMillis = System.currentTimeMillis();
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        PrismObject<UserType> userLargo = PrismTestUtil.parseObject(USER_LARGO_FILE);
        ObjectDelta<UserType> addDelta = userLargo.createAddDelta();
        Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(addDelta);

        // WHEN
        modelService.executeChanges(deltas, null, task, result);

        // THEN
        userLargo = getUser(USER_LARGO_OID);
		display("User after change execution", userLargo);

		assertValidity(userLargo, TimeIntervalStatusType.IN);
		assertValidityTimestamp(userLargo, startMillis, System.currentTimeMillis());
		assertEffectiveStatus(userLargo, ActivationStatusType.ENABLED);
	}

	@Test
    public void test205ModifyUserLargoAssignAccount() throws Exception {
		final String TEST_NAME = "test205ModifyUserLargoAssignAccount";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();
        assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

        Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<ObjectDelta<? extends ObjectType>>();
        ObjectDelta<UserType> accountAssignmentUserDelta = createAccountAssignmentUserDelta(USER_LARGO_OID, RESOURCE_DUMMY_OID, null, true);
        accountAssignmentUserDelta.addModificationAddProperty(UserType.F_FULL_NAME, PrismTestUtil.createPolyString("Largo LaGrande"));
        deltas.add(accountAssignmentUserDelta);

		// WHEN
		modelService.executeChanges(deltas, null, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess("executeChanges result", result);

		PrismObject<UserType> userLargo = getUser(USER_LARGO_OID);
		display("User after change execution", userLargo);
		assertUser(userLargo, USER_LARGO_OID, USER_LARGO_USERNAME, "Largo LaGrande", "Largo", "LaGrande");
        accountOid = getSingleLinkOid(userLargo);

		// Check shadow
        PrismObject<ShadowType> accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result);
        assertDummyAccountShadowRepo(accountShadow, accountOid, USER_LARGO_USERNAME);

        // Check account
        PrismObject<ShadowType> accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result);
        assertDummyAccountShadowModel(accountModel, accountOid, USER_LARGO_USERNAME, "Largo LaGrande");

        // Check account in dummy resource
        assertDummyAccount(USER_LARGO_USERNAME, "Largo LaGrande", true);
	}

	@Test
    public void test210ModifyLargoValidTo10MinsAgo() throws Exception {
		final String TEST_NAME = "test210ModifyLargoValidTo10MinsAgo";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        long startMillis = System.currentTimeMillis();
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        XMLGregorianCalendar tenMinutesAgo = XmlTypeConverter.createXMLGregorianCalendar(System.currentTimeMillis() - 10 * 60 * 1000);

        // WHEN
        modifyUserReplace(USER_LARGO_OID, ACTIVATION_VALID_TO_PATH, task, result, tenMinutesAgo);

        // THEN
        PrismObject<UserType> userLargo = getUser(USER_LARGO_OID);
		display("User after change execution", userLargo);

		assertValidity(userLargo, TimeIntervalStatusType.AFTER);
		assertValidityTimestamp(userLargo, startMillis, System.currentTimeMillis());
		assertEffectiveStatus(userLargo, ActivationStatusType.DISABLED);

		assertUser(userLargo, USER_LARGO_OID, USER_LARGO_USERNAME, "Largo LaGrande", "Largo", "LaGrande");
        accountOid = getSingleLinkOid(userLargo);

		// Check shadow
        PrismObject<ShadowType> accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result);
        assertDummyAccountShadowRepo(accountShadow, accountOid, USER_LARGO_USERNAME);

        // Check account
        PrismObject<ShadowType> accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result);
        assertDummyAccountShadowModel(accountModel, accountOid, USER_LARGO_USERNAME, "Largo LaGrande");

        // Check account in dummy resource
        assertDummyAccount(USER_LARGO_USERNAME, "Largo LaGrande", false);
	}

	@Test
    public void test211ModifyLargoValidToManana() throws Exception {
		final String TEST_NAME = "test211ModifyLargoValidToManana";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        long startMillis = System.currentTimeMillis();
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        manana = XmlTypeConverter.createXMLGregorianCalendar(System.currentTimeMillis() + 10 * 24 * 60 * 60 * 1000);

        // WHEN
        modifyUserReplace(USER_LARGO_OID, ACTIVATION_VALID_TO_PATH, task, result, manana);

        // THEN
        PrismObject<UserType> userLargo = getUser(USER_LARGO_OID);
		display("User after change execution", userLargo);

		assertValidity(userLargo, TimeIntervalStatusType.IN);
		assertValidityTimestamp(userLargo, startMillis, System.currentTimeMillis());
		lastValidityChangeTimestamp = userLargo.asObjectable().getActivation().getValidityChangeTimestamp();
		assertEffectiveStatus(userLargo, ActivationStatusType.ENABLED);

		assertUser(userLargo, USER_LARGO_OID, USER_LARGO_USERNAME, "Largo LaGrande", "Largo", "LaGrande");
        accountOid = getSingleLinkOid(userLargo);

		// Check shadow
        PrismObject<ShadowType> accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result);
        assertDummyAccountShadowRepo(accountShadow, accountOid, USER_LARGO_USERNAME);

        // Check account
        PrismObject<ShadowType> accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result);
        assertDummyAccountShadowModel(accountModel, accountOid, USER_LARGO_USERNAME, "Largo LaGrande");

        // Check account in dummy resource
        assertDummyAccount(USER_LARGO_USERNAME, "Largo LaGrande", true);
	}

	/**
	 * Move time to tomorrow. Nothing should change yet. It is not yet manana.
	 */
	@Test
    public void test212SeeLargoTomorrow() throws Exception {
		final String TEST_NAME = "test212SeeLargoTomorrow";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        long startMillis = System.currentTimeMillis();
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        // Let's play with the clock, move the time to tomorrow
        long crrentNow = System.currentTimeMillis() + 24 * 60 * 60 * 1000;
        clock.override(crrentNow);

        // WHEN
        modelService.recompute(UserType.class, USER_LARGO_OID, task, result);

        // THEN
        PrismObject<UserType> userLargo = getUser(USER_LARGO_OID);
		display("User after change execution", userLargo);

		assertValidity(userLargo, TimeIntervalStatusType.IN);
		assertEffectiveStatus(userLargo, ActivationStatusType.ENABLED);
		assertValidityTimestamp(userLargo, lastValidityChangeTimestamp);

		assertUser(userLargo, USER_LARGO_OID, USER_LARGO_USERNAME, "Largo LaGrande", "Largo", "LaGrande");
        accountOid = getSingleLinkOid(userLargo);

		// Check shadow
        PrismObject<ShadowType> accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result);
        assertDummyAccountShadowRepo(accountShadow, accountOid, USER_LARGO_USERNAME);

        // Check account
        PrismObject<ShadowType> accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result);
        assertDummyAccountShadowModel(accountModel, accountOid, USER_LARGO_USERNAME, "Largo LaGrande");

        // Check account in dummy resource
        assertDummyAccount(USER_LARGO_USERNAME, "Largo LaGrande", true);
	}

	/**
	 * Move time after manana. Largo should be invalid.
	 */
	@Test
    public void test213HastaLaMananaLargo() throws Exception {
		final String TEST_NAME = "test213HastaLaMananaLargo";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        long startMillis = System.currentTimeMillis();
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        // Let's play with the clock, move the time forward 20 days
        long crrentNow = System.currentTimeMillis() + 20 *24 * 60 * 60 * 1000;
        clock.override(crrentNow);

        // WHEN
        modelService.recompute(UserType.class, USER_LARGO_OID, task, result);

        // THEN
        PrismObject<UserType> userLargo = getUser(USER_LARGO_OID);
		display("User after change execution", userLargo);

		assertValidity(userLargo, TimeIntervalStatusType.AFTER);
		assertValidityTimestamp(userLargo, crrentNow);
		assertEffectiveStatus(userLargo, ActivationStatusType.DISABLED);

		assertUser(userLargo, USER_LARGO_OID, USER_LARGO_USERNAME, "Largo LaGrande", "Largo", "LaGrande");
        accountOid = getSingleLinkOid(userLargo);

		// Check shadow
        PrismObject<ShadowType> accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result);
        assertDummyAccountShadowRepo(accountShadow, accountOid, USER_LARGO_USERNAME);

        // Check account
        PrismObject<ShadowType> accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result);
        assertDummyAccountShadowModel(accountModel, accountOid, USER_LARGO_USERNAME, "Largo LaGrande");

        // Check account in dummy resource
        assertDummyAccount(USER_LARGO_USERNAME, "Largo LaGrande", false);
	}

	@Test
    public void test215ModifyLargoRemoveValidTo() throws Exception {
		final String TEST_NAME = "test215ModifyLargoRemoveValidTo";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        long startMillis = clock.currentTimeMillis();
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        // WHEN
        modifyUserDelete(USER_LARGO_OID, ACTIVATION_VALID_TO_PATH, task, result, manana);

        // THEN
        PrismObject<UserType> userLargo = getUser(USER_LARGO_OID);
		display("User after change execution", userLargo);

		assertValidity(userLargo, TimeIntervalStatusType.IN);
		assertValidityTimestamp(userLargo, startMillis, clock.currentTimeMillis());
		lastValidityChangeTimestamp = userLargo.asObjectable().getActivation().getValidityChangeTimestamp();
		assertEffectiveStatus(userLargo, ActivationStatusType.ENABLED);

		assertUser(userLargo, USER_LARGO_OID, USER_LARGO_USERNAME, "Largo LaGrande", "Largo", "LaGrande");
        accountOid = getSingleLinkOid(userLargo);

		// Check shadow
        PrismObject<ShadowType> accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result);
        assertDummyAccountShadowRepo(accountShadow, accountOid, USER_LARGO_USERNAME);

        // Check account
        PrismObject<ShadowType> accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result);
        assertDummyAccountShadowModel(accountModel, accountOid, USER_LARGO_USERNAME, "Largo LaGrande");

        // Check account in dummy resource
        assertDummyAccount(USER_LARGO_USERNAME, "Largo LaGrande", true);
	}

	@Test
    public void test217ModifyLargoRemoveValidFrom() throws Exception {
		final String TEST_NAME = "test217ModifyLargoRemoveValidFrom";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        long startMillis = clock.currentTimeMillis();
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        // WHEN
        modifyUserReplace(USER_LARGO_OID, ACTIVATION_VALID_FROM_PATH, task, result);

        // THEN
        PrismObject<UserType> userLargo = getUser(USER_LARGO_OID);
		display("User after change execution", userLargo);

		assertValidity(userLargo, null);
		assertValidityTimestamp(userLargo, startMillis, clock.currentTimeMillis());
		lastValidityChangeTimestamp = userLargo.asObjectable().getActivation().getValidityChangeTimestamp();
		assertEffectiveStatus(userLargo, ActivationStatusType.DISABLED);

		assertUser(userLargo, USER_LARGO_OID, USER_LARGO_USERNAME, "Largo LaGrande", "Largo", "LaGrande");
        accountOid = getSingleLinkOid(userLargo);

		// Check shadow
        PrismObject<ShadowType> accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result);
        assertDummyAccountShadowRepo(accountShadow, accountOid, USER_LARGO_USERNAME);

        // Check account
        PrismObject<ShadowType> accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result);
        assertDummyAccountShadowModel(accountModel, accountOid, USER_LARGO_USERNAME, "Largo LaGrande");

        // Check account in dummy resource
        assertDummyAccount(USER_LARGO_USERNAME, "Largo LaGrande", false);
	}

	/**
	 * Delete assignment from repo. Model should not notice. The change should be applied after recompute.
	 */
	@Test
    public void test230JackUnassignRepoRecompute() throws Exception {
		final String TEST_NAME = "test230JackUnassignRepoRecompute";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        long startMillis = clock.currentTimeMillis();
        Task task = taskManager.createTaskInstance(TestActivation.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        addObject(USER_JACK_FILE);
        assignAccount(USER_JACK_OID, RESOURCE_DUMMY_RED_OID, null, task, result);
        assertDummyAccount(RESOURCE_DUMMY_RED_NAME, ACCOUNT_JACK_DUMMY_USERNAME, "Jack Sparrow", true);

        // Delete the assignment from the repo. Really use the repo directly. We do not want the model to notice.
        ObjectDelta<UserType> userDelta = createAccountAssignmentUserDelta(USER_JACK_OID, RESOURCE_DUMMY_RED_OID, null, false);
        repositoryService.modifyObject(UserType.class, userDelta.getOid(), userDelta.getModifications(), result);
        assertDummyAccount(RESOURCE_DUMMY_RED_NAME, ACCOUNT_JACK_DUMMY_USERNAME, "Jack Sparrow", true);

        // WHEN
        TestUtil.displayWhen(TEST_NAME);
        recomputeUser(USER_JACK_OID, task, result);

        // THEN
        TestUtil.displayThen(TEST_NAME);
        result.computeStatus();
        TestUtil.assertSuccess(result);

        assertDummyAccount(RESOURCE_DUMMY_RED_NAME, ACCOUNT_JACK_DUMMY_USERNAME, "Jack Sparrow", false);
	}

	/**
	 * Test reading of validity data through shadow
	 */
	@Test
    public void test300AddDummyGreenAccountMancomb() throws Exception {
		final String TEST_NAME = "test300AddDummyGreenAccountMancomb";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = createTask(AbstractSynchronizationStoryTest.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        DummyAccount account = new DummyAccount(ACCOUNT_MANCOMB_DUMMY_USERNAME);
		account.setEnabled(true);
		account.setValidFrom(ACCOUNT_MANCOMB_VALID_FROM_DATE);
		account.setValidTo(ACCOUNT_MANCOMB_VALID_TO_DATE);
		account.addAttributeValues(DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_FULLNAME_NAME, "Mancomb Seepgood");
		account.addAttributeValues(DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_LOCATION_NAME, "Melee Island");

		/// WHEN
        TestUtil.displayWhen(TEST_NAME);

		dummyResourceGreen.addAccount(account);

        // THEN
        TestUtil.displayThen(TEST_NAME);

        PrismObject<ShadowType> accountMancomb = findAccountByUsername(ACCOUNT_MANCOMB_DUMMY_USERNAME, resourceDummyGreen);
        display("Account mancomb", accountMancomb);
        assertNotNull("No mancomb account shadow", accountMancomb);
        accountMancombOid = accountMancomb.getOid();
        assertEquals("Wrong resourceRef in mancomb account", RESOURCE_DUMMY_GREEN_OID,
        		accountMancomb.asObjectable().getResourceRef().getOid());
        assertValidFrom(accountMancomb, ACCOUNT_MANCOMB_VALID_FROM_DATE);
        assertValidTo(accountMancomb, ACCOUNT_MANCOMB_VALID_TO_DATE);
	}

	/**
	 * Testing of inbound mappings for validity data. Done by initiating an import of accouts from green resource.
	 */
	@Test
    public void test310ImportAccountsFromDummyGreen() throws Exception {
		final String TEST_NAME = "test310ImportAccountsFromDummyGreen";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = createTask(AbstractSynchronizationStoryTest.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

        // Preconditions
        assertUsers(6);
        PrismObject<UserType> userMancomb = findUserByUsername(ACCOUNT_MANCOMB_DUMMY_USERNAME);
        assertNull("Unexpected user mancomb before import", userMancomb);

        // WHEN
        TestUtil.displayWhen(TEST_NAME);
        modelService.importFromResource(RESOURCE_DUMMY_GREEN_OID, new QName(dummyResourceCtlGreen.getNamespace(), "AccountObjectClass"), task, result);

        // THEN
        TestUtil.displayThen(TEST_NAME);
        OperationResult subresult = result.getLastSubresult();
        TestUtil.assertInProgress("importAccountsFromResource result", subresult);

        waitForTaskFinish(task, true, 40000);

        TestUtil.displayThen(TEST_NAME);

        userMancomb = findUserByUsername(ACCOUNT_MANCOMB_DUMMY_USERNAME);
        assertNotNull("No user mancomb after import", userMancomb);
        userMancombOid = userMancomb.getOid();

        assertUsers(7);

        assertAdministrativeStatusEnabled(userMancomb);
        assertValidFrom(userMancomb, ACCOUNT_MANCOMB_VALID_FROM_DATE);
        assertValidTo(userMancomb, ACCOUNT_MANCOMB_VALID_TO_DATE);
	}

	@Test
    public void test350AssignMancombBlueAccount() throws Exception {
		final String TEST_NAME = "test350AssignMancombBlueAccount";
        TestUtil.displayTestTile(this, TEST_NAME);

        // GIVEN
        Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + "." + TEST_NAME);
        OperationResult result = task.getResult();

		// WHEN
        assignAccount(userMancombOid, RESOURCE_DUMMY_BLUE_OID, null, task, result);

		// THEN
		result.computeStatus();
        TestUtil.assertSuccess(result);

        PrismObject<UserType> userMancomb = getUser(userMancombOid);
		display("User after change execution", userMancomb);
		assertAccounts(userMancombOid, 2);

		DummyAccount mancombBlueAccount = getDummyAccount(RESOURCE_DUMMY_BLUE_NAME, ACCOUNT_MANCOMB_DUMMY_USERNAME);
		assertNotNull("No mancomb blue account", mancombBlueAccount);
		assertTrue("mancomb blue account not enabled", mancombBlueAccount.isEnabled());
		assertEquals("Wrong validFrom in mancomb blue account", ACCOUNT_MANCOMB_VALID_FROM_DATE, mancombBlueAccount.getValidFrom());
		assertEquals("Wrong validTo in mancomb blue account", ACCOUNT_MANCOMB_VALID_TO_DATE, mancombBlueAccount.getValidTo());
	}

	@Test
    public void test400AddHerman() throws Exception {
		final String TEST_NAME = "test400AddHerman";
        TestUtil.displayTestTile(this, TEST_NAME);

		// WHEN
        addObject(USER_HERMAN_FILE);

        // THEN
        // Make sure that it is effectivelly enabled
        PrismObject<UserType> userHermanAfter = getUser(USER_HERMAN_OID);
        assertEffectiveActivation(userHermanAfter, ActivationStatusType.ENABLED);
	}

	private void assertDummyActivationEnabledState(String userId, boolean expectedEnabled) {
		assertDummyActivationEnabledState(null, userId, expectedEnabled);
	}

	private void assertDummyActivationEnabledState(String instance, String userId, boolean expectedEnabled) {
		DummyAccount account = getDummyAccount(instance, userId);
		assertNotNull("No dummy account "+userId, account);
		assertEquals("Wrong enabled flag in dummy '"+instance+"' account "+userId, expectedEnabled, account.isEnabled());
	}

	private void assertDummyEnabled(String userId) {
		assertDummyActivationEnabledState(userId, true);
	}

	private void assertDummyDisabled(String userId) {
		assertDummyActivationEnabledState(userId, false);
	}

	private void assertDummyEnabled(String instance, String userId) {
		assertDummyActivationEnabledState(instance, userId, true);
	}

	private void assertDummyDisabled(String instance, String userId) {
		assertDummyActivationEnabledState(instance, userId, false);
	}

	private void assertValidity(PrismObject<UserType> user, TimeIntervalStatusType expectedValidityStatus) {
		ActivationType activation = user.asObjectable().getActivation();
		assertNotNull("No activation in "+user, activation);
		assertEquals("Unexpected validity status in "+user, expectedValidityStatus, activation.getValidityStatus());
	}

	private void assertValidityTimestamp(PrismObject<UserType> user, long expected) {
		ActivationType activation = user.asObjectable().getActivation();
		assertNotNull("No activation in "+user, activation);
		XMLGregorianCalendar validityChangeTimestamp = activation.getValidityChangeTimestamp();
		assertNotNull("No validityChangeTimestamp in "+user, validityChangeTimestamp);
		assertEquals("wrong validityChangeTimestamp", expected, XmlTypeConverter.toMillis(validityChangeTimestamp));
	}

	private void assertValidityTimestamp(PrismObject<UserType> user, XMLGregorianCalendar expected) {
		ActivationType activation = user.asObjectable().getActivation();
		assertNotNull("No activation in "+user, activation);
		XMLGregorianCalendar validityChangeTimestamp = activation.getValidityChangeTimestamp();
		assertNotNull("No validityChangeTimestamp in "+user, validityChangeTimestamp);
		assertEquals("wrong validityChangeTimestamp", expected, validityChangeTimestamp);
	}

	private void assertValidityTimestamp(PrismObject<UserType> user, long lowerBound, long upperBound) {
		ActivationType activation = user.asObjectable().getActivation();
		assertNotNull("No activation in "+user, activation);
		XMLGregorianCalendar validityChangeTimestamp = activation.getValidityChangeTimestamp();
		assertNotNull("No validityChangeTimestamp in "+user, validityChangeTimestamp);
		long validityMillis = XmlTypeConverter.toMillis(validityChangeTimestamp);
		if (validityMillis >= lowerBound && validityMillis <= upperBound) {
			return;
		}
		AssertJUnit.fail("Expected validityChangeTimestamp to be between "+lowerBound+" and "+upperBound+", but it was "+validityMillis);
	}

	private void assertEffectiveStatus(PrismObject<UserType> user, ActivationStatusType expected) {
		ActivationType activation = user.asObjectable().getActivation();
		assertNotNull("No activation in "+user, activation);
		assertEquals("Unexpected effective activation status in "+user, expected, activation.getEffectiveStatus());
	}

}

redpajama_set_name: RedPajamaGithub


Image Title: Brazilian Teak Smooth Engineered Hardwood 1 2in X 5in With Flooring Decor 8. Post Title: Brazilian Teak Flooring. Filename: brazilian-teak-smooth-engineered-hardwood-1-2in-x-5in-with-flooring-decor-8.jpg. Image Dimension: 500 x 500 pixels. Images Format: jpg/jpeg. Publisher/Author: Donnie Anderson. Uploaded Date: Saturday - October 13th. 2018 17:37:14 PM. Category: Architecture. Image Source: zillow.com. Home Legend Brazilian Teak Avalon 1 2 In T X 5 W Varying Throughout Flooring Prepare 13. Featured Floor Bronzed Brazilian Teak Within Flooring Designs 9. Brazilian Teak Hardwood Flooring YouTube Intended For Ideas 4. Brazilian Teak Cumaru Flooring Regarding Plan 6. Brazilian Teak Clear Prefinished Solid Wood Flooring 5 X 3 4 With Regard To Plan 2. Brazilian Teak Flooring Allin The Details Let S Read This First In Designs 16. Brazilian Teak Hardwood Flooring Pictures Colors Hardness Pertaining To Ideas 10. Brazilian Teak Natural Boardwalk Hardwood Floors For Flooring Designs 18. Brazilian Teak Hardwood Flooring Cumaru Flooirng Regarding Plan 5. Brazilian Teak Hardwood Cumaru Flooring Prefinished Wood Floors Pertaining To Decor 17.


text:
Nike Suspends Partnership With Deshaun Watson Amid Mounting Sexual Misconduct Allegations
Team CASSIUS @morninghustleam
Source: Carmen Mandato / Getty
Corporate America is finally taking a stand against Deshaun Watson.
Weeks ago, around the time the quarterback wanted a trade out of Houston, allegations of sexual misconduct began to pour in against Watson. At first, it was just a few accusations, but as of this week, 22 women have bravely come forward to tell their stories of how Watson mistreated them.
Brands have decided to take a stand against Watson's actions by dropping him from their sponsorship roster– including Nike, who signed him before the 2017 NFL Draft.
"We are deeply concerned by the disturbing allegations and have suspended Deshaun Watson. We will continue to closely monitor the situation," Nike said in a statement.
Just hours later, Beats By Dre, who'd been working with the 25-year-old since he left Clemson, also ended its partnership because of the mounting victims, states USA Today.
Watson also served as a Brand ambassador for Reliant, who doesn't plan on extending an expiring partnership.
"Reliant is aware of pending civil lawsuits and a criminal investigation involving Deshaun Watson, Houston Texans quarterback," the company said in a statement. "Our relationship with Watson as a brand ambassador was scheduled to end this spring prior to these allegations, and there are no plans for future engagements or contracts with him. We take accusations of this nature very seriously. With respect to the legal process, we do not have any further comment on this matter."
The brands' decision comes less than a day after one victim came forward publicly revealing their name, which all started with massage therapist Ashley Solis.
"I got into massage therapy to heal people," Solis said. "To heal their minds and bodies. To bring peace to their souls. Deshaun Watson has robbed me of that. He took that away from me, he tainted a profession in which I take enormous pride. … I suffer from panic attacks, anxiety, and depression."
She went on to reveal her pure intentions behind speaking her truth
"People say that I'm doing this just for money. That is false. I come forward now so that Deshaun Watson does not assault another woman."
As more women come forward, expect other brands that work with Watson to cut ties.
Nike Suspends Partnership With Deshaun Watson Amid Mounting Sexual Misconduct Allegations was originally published on cassiuslife.com
Deshaun Watson nfl nike


Drs. Tom Albert and Dana Smith worked tirelessly so that everyone who came had a surgical evaluation.
Together, they evaluated 100 patients!
Zoila Chacón, nutritionist at Hospital Belén, gave an incredibly informative and practical presentation with advice on feeding children with clefts. She shared insights on how to shop, how to prepare the food, and how much food a child needs at each stage of development.
Zoila Chacón gives nutrition presentation in patient waiting area.
Our Peruvian Patient Coordinator, Delia Delgado, collaborated with educators Mei-Ling Schwartz, Charles Brod and Pamela Jensen to conduct patient interviews. The goal of the interviews was to understand the obstacles families face when raising babies and children with clefts. Over the next several months, we will re-listen to these interviews to analyze patterns that could be helpful in further developing cleft education in Peru.
Delia speaks with three different families, each with a newborn with a cleft.
Local hospital interns set up face painting for all of the children.
The line for the face painting was just as long as the line to see the surgeons!
As in years past, the local Lions Clubs teamed up with members of Lions Clubs from the Pacific Northwest. All week long, they organized vision campaigns and distributed thousands of reading glasses donated by the Oregon Lions Sight and Hearing Foundation.
Anne Brod, a student from St. Mary's Academy, joined the FACES team this year. Before flying to Chiclayo with all of us, Anne enlisted the support of friends and family, and raised over $4500 for FACES!
Anne with coloring books and crayons.
Throughout the week, Anne accompanied the local Lions Club members to remote areas of Lambayeque for vision campaigns. During patient evaluations, she engaged marvelously with the families in the waiting area.
We want to thank all of our Peruvian Colleagues for their support during this very busy trip and during the entire year. The members of the local Lions Clubs help identify patients and assist families in food and lodging. Staff from Hospital Regional and Hospital Belén prepare these children for their surgeries.


With very few exceptions, those in leadership roles (whether they be entrepreneurs, senior corporate figures, or those with positions of great responsibility) tend to be the type of individuals that thrive under stress.
In my own experience; the short-term stress of projects and other situations can be a fantastic (and frankly, a productive) asset, but over longer-periods it can be hugely destructive. Over the years, I have lost a number of close friends who have taken their own lives as a result of the mental illnesses associated with stress; and have seen many more who have suffered for decades, with significant impairment to their quality of life.
For anyone in a leadership position, it's therefore critical to manage your stress; and a few basic principles can really help.
I cannot underline enough how important it is to seek help from a medical professional if stress is getting on top of you. It's not a sign of weakness, it's a sign of strength, and shows you taking ownership of the problem. The overwhelming majority of entrepreneurs I work with in the USA, for example, privately credit their therapist as being as critical to them as any member of their board.
A great piece of advice from Dr. Freeman was not to "make the mistake of confusing net worth and self-worth." In leadership, people often talk about income as being the 'score-card' for success, but frankly; this is a misnomer; and many of my colleagues in the 'city' brag about how they got into work at silly-o'clock in the morning, and didn't leave till silly-o'clock at night. Many of the most successful people I've met in the world work-smart not hard, there is a big difference.
Leadership roles are often lonely. CEO networks, mentoring groups and many more such organisations can be hugely important in giving you a group of peers, on the same journey as you with whom you can share experiences, stories and garner support.
This is perhaps the most obvious piece of advice, but good nutrition, rest, exercise and relaxation skills (such as mindfulness, meditation and hobbies) are essential. In high-pressure roles, it's often difficult to make time for such-pursuits, but you have to be strong enough to carve out time in your life, and defend it relentlessly. This is not only good for you, but preciously important for your relationships and family.
Many of the most profoundly important things I've achieved in my life, have been as a result of stressful situations; and I am deeply grateful for that- but stress is a drug, and in moderation and with control, it can be enjoyed safely- but when it spirals out of control, it can destroy lives.


The International Investigation center of potatoes (CIP, Centro Internacional de la Papa) starts its wide investigation about Morera's products. The CIP has started to work in collaboration with José Morera, S.L. in order to carry out a wide investigation about the effect on potatoes of different vegetable extracts, in particular the Forticol range, and the effect of different phosphites, in particular the Glassrange, all them products of Morera.
The Morera' s range of vegetable extracts is showing to be a valuable tool that can be used alternatively to the conventional products, thanks to the phytofortify properties of the Forticol range.
The Glassproducts range, that is already known by farmer of different Latino-American countries, specially in Ecuador, it's showing an high variety of product and an high quality; for this reason it represent a concrete solution to the different problems that affect latino-american agriculture.
One more time it was proved the firm and determined commitment of José Morera S.L. with the latinoamerican market.


Thanksgiving, known as a holiday of overindulgence was quite the opposite in it's humble Pilgrim beginnings. Can you imagine free pass of overindulgence never having existed? You might be surprised to find out that according to Parenting.com, we have the Wampanoag Indians to thank for feasting on Thanksgiving. In 1621, following the Pilgrims first harvest, they would have fasted as their way of thanksgiving for a successful harvest, however, a group of 90 Wampanoag showed up and turned it into a 3 day feast. Hence, a tradition was born!
Fast forward a couple of hundred years...due to the incredible perseverance of Sarah Josepha Hale (songwriter of "Mary Had a Little Lamb) who kept writing to President Lincoln for 17 years on behalf of having Thanksgiving being declared a national holiday, it became so in 1863.
Knowing what could have been really puts a fresh perspective on Thanksgiving doesn't it? I know that I will enjoy the bounty on my family's table that much more and extend my thanks to the Native Americans, Sarah Josepha Hale and President Lincoln.


This week Theo and Dee catch up with tinkerer and engineer extraordinaire, Niall Darwin and get an update on his negotiations with Tesla about restoring charging to his Tesla he repaired, and Dee fills us in on her latest speaking event at a conference in Scotland.
If you enjoy our Podcast please support us by subscribing to the podcast on Patreon.com.
The more support we get the more we can cover. Become a Patron!
NextKarl Moreton: Property Investors Beware!


I was searching for a Property and found this listing (MLS 218104970). Please send me more information regarding 25939 ETON AVE Dearborn Heights, Michigan 48125. Thank you!
I'd like to request a showing of (MLS 218104970) 25939 ETON AVE Dearborn Heights, Michigan 48125. Thank you!
This data up-to-date as of April 25, 2019 time - 09:02 AM. For the most current information, contact Dave W. Abdallah, (313) 274-7200, amberbcentury21@gmail.com. The data relating to real estate for sale on this website comes in part from the IDX program of Realcomp. Real estate listings held by brokerage firms other than Dave W. Abdallah. are marked with the IDX logo and detailed information about them includes the name of the listing brokers.


Enables you to summon a player of the same race as you or a Human player who supports your race. Use the item, enter the name of a player, and wait for his/her response. He/she will be summoned to your location upon accepting the request. Cannot be used in certain locations including dungeons and Sidhe Sneachta, or to summon a player using a skill at the time of a summons.
Use it to summon anyone in Uladh or Iria to your current location.
You must type in their exact name (case sensitive) in order to summon them.
You need the other person's permission in order to summon them.
The person is in Combat Mode.
The person is talking to an NPC.
The person is not online.
The person is on a mount.
You or the person are not in the same channel or server.
Your or the person are in a homestead.
It has not yet been three minutes since a summoning request has been denied and you try to summon the same person who denied the request.
The person is in a pet battle.
You or the person are knocked unconscious.
You are in a dungeon.
You or the person are in Tir Chonaill (Another World) or Bangor (Another World).
The person is the opposing race or allied with the opposing race.
This means an elf-allied human or elf will be unable to summon a giant.
A giant-allied human or giant will be unable to summon an elf.
Humans will be able to summon other humans, even if they are allied with the opposing race.
You or the person are in a Battle Arena.
You or the person is Rafting in Courcle.
You or the person are using a skill or has a skill loaded.
If the correct name is entered, but the person cannot be summoned due to any of the above reasons, both players will be informed via message that an attempt to summon cannot be done.
This page was last edited on 2 February 2019, at 09:24.


The Technical Safety BC is the authority that issues gas installation and operating permits for the Province of British Columbia. Most propane appliances annd equipment require a provincal gas permit before it is to be installed or operated. Homeowners insurance requires that all permits be taken out on any propane appliance to ensure that the appliance has been install to industry and safety standards. The TSBC may inspect any regulated equipment to confirm that owners are taking proper measures to ensure compliance with Gas Regulations and the Safety Standards Act. Often the contractor who is doing the installation will apply for the gas permit before the installation and on behalf of the home owner. Homeowners doing gas installations themselves are required to apply for the gas permit before they begin an installation.