Krom, хорошо, что вы сразу предупредили, что пишете плагин впервые. Ваш код только это и оправдывает.

Разберем:
Код:
XmlDocument xmlConfig = new XmlDocument();
xmlConfig.Load(@"C:\WIN2003\system32\inetsrv\PluginsConfig.xml");
XmlNode rootConfig = xmlConfig.FirstChild;
Какую-либо конфигурацию плагина лучше хранить в Unsecure или Secure Configuration, которая указывается при регистрации step'а плагина и при выполнении передается параметром в конструктор плагина.
Но в данном случае вам конфиг не нужен вообще, поскольку вы пытаетесь извлечь оттуда имя сервера и имя организации для создании CrmService, тогда так в плагине CrmService нужно создавать из контекста, на что уже справедливо обратил внимание ZooY.
Затем:
Код:
Lookup lookupPrice = new Lookup();
lookupPrice.Value = ((SDK::Lookup)currentPrice.Properties["pricelevelid"]).Value
При создании лукапов надо еще указывать type.
И вот:
Код:
bePriceUpdate.amount.Value = price;
Это, конечно, ошибка, т.к. таким простым способом можно присваивать значения только атрибутам с типом string.
В данном случае надо было сначала написать:
Код:
bePriceUpdate.amount = new CrmMoney();
И зачем нужна мешанина из нэймспейсов, я вообще не понял.