That's how i create IPropertySource instance:
gpPropsrc=new CMcPropertySource();
BSTR name = NULL;
gpPropSrc->get_Name(&name);
if(GET_OPM_PERINSTANCE_PROPERTY_SOURCES()->SetPropertySourceAt(&name, gpPropSrc))
GET_OPM_PERINSTANCE_EXTENSION_PROTOCOL(myObjectType::desc())->AddObjectPropertySourceName(&name);
So, acad calls IPropertySource::GetProperties() and fills OPM when selection of my obect has occured. Then i change some property, and values of other properties is updating. I expect that properties set must be updated too. But it doesn't happen. Sorry for my English.