# The following modules have unmet dependencies

**URL:** <https://community.itop-itsm.ru/t/the-following-modules-have-unmet-dependencies/311>\
**Category:** Использование\
**Created:** [23.Февраль.2016 08:08:50 UTC](https://community.itop-itsm.ru/t/the-following-modules-have-unmet-dependencies/311 "2016-02-23T08:08:50Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Krasava](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/k/a88e57/32.png) [@Krasava](https://community.itop-itsm.ru/u/Krasava)\
**Post date:** [23.Февраль.2016 08:08:51 UTC](https://community.itop-itsm.ru/t/the-following-modules-have-unmet-dependencies/311/1 "2016-02-23T08:08:51Z")

</div>

Ранее мной был создан модуль и он работал на прошлой версии iTop.  
После перехода на версию 2.2.1 он перестал работать. Во время установки выходит ошибка:  
 ![](https://community.itop-itsm.ru/uploads/default/106/fc3514da30000375.jpg)  
В форме создания модуля есть поле Dependencies.  
В прошлый раз я там ничего не указывал.  
Кто знает для чего необходимо это поле в форме генерации новых модулей?  
[https://wiki.openitop.org/doku.php?id=customization:start#creating\_a\_module](https://wiki.openitop.org/doku.php?id=customization:start#creating_a_module)

---

<div class="post-metadata">

**Author:** ![Krasava](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/k/a88e57/32.png) [@Krasava](https://community.itop-itsm.ru/u/Krasava)\
**Post date:** [23.Февраль.2016 08:19:19 UTC](https://community.itop-itsm.ru/t/the-following-modules-have-unmet-dependencies/311/2 "2016-02-23T08:19:19Z")

</div>

XML код модуля

```
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
	<constants>
	</constants>
	<classes>
	<class id="Diesel" _delta="define">
		<parent>PowerConnection</parent>
		<properties>
			<category>bizmodel,searchable</category>
			<abstract>false</abstract>
			<key_type>autoincrement</key_type>
			<db_table>diesel</db_table>
			<db_key_field>id</db_key_field>
			<db_final_class_field/>
			<naming>
			<format>%1$s</format>
			<attributes>
				<attribute id="name"/>
			</attributes>
			</naming>
			<display_template/>
			<icon>images/engine.png</icon>
			<reconciliation>
			<attributes>
				<attribute id="name"/>
				<attribute id="org_id"/>
				<attribute id="organization_name"/>
			</attributes>
			</reconciliation>
		</properties>
		<fields>
			<field id="motor_list" xsi:type="AttributeLinkedSet">
			<linked_class>Motor</linked_class>
			<ext_key_to_me>diesel_id</ext_key_to_me>
			</field>
			<field id="generator_list" xsi:type="AttributeLinkedSet">
			<linked_class>Generator</linked_class>
			<ext_key_to_me>diesel_id</ext_key_to_me>
			</field>
			<field id="ats_list" xsi:type="AttributeLinkedSet">
			<linked_class>autoswitch</linked_class>
			<ext_key_to_me>diesel_id</ext_key_to_me>
			</field>
			<field id="contactor_list" xsi:type="AttributeLinkedSet">
			<linked_class>Contactor</linked_class>
			<ext_key_to_me>diesel_id</ext_key_to_me>
			</field>
		</fields>
		<methods/>
		<presentation>
		<details>
		<items>
			<item id="name">
		           <rank>10</rank>
			</item>
			<item id="org_id">
				<rank>20</rank>
			</item>
			<item id="status">
				<rank>30</rank>
			</item>
			<item id="business_criticity">
				<rank>40</rank>
			</item>
			<item id="location_id">
				<rank>50</rank>
			</item>
			<item id="brand_id">
			        <rank>60</rank>
			</item>
			<item id="model_id">
				<rank>70</rank>
			</item>
			<item id="motor_list">
				<rank>80</rank>
			</item>
			<item id="generator_list">
				<rank>90</rank>
			</item>
			<item id="ats_list">
				<rank>100</rank>
			</item>
			<item id="contactor_list">
				<rank>110</rank>
			</item>
			<item id="serialnumber">
				<rank>120</rank>
			</item>
			<item id="asset_number">
				<rank>130</rank>
			</item>
			<item id="move2production">
				<rank>140</rank>
			</item>
			<item id="purchase_date">
				<rank>150</rank>
			</item>
			<item id="end_of_warranty">
				<rank>160</rank>
			</item>
			<item id="description">
				<rank>170</rank>
			</item>
			<item id="contacts_list">
				<rank>180</rank>
			</item>
			<item id="documents_list">
				<rank>190</rank>
			</item>
			<item id="tickets_list">
				<rank>200</rank>
			</item>
			<item id="providercontracts_list">
				<rank>210</rank>
			</item>
			<item id="services_list">
				<rank>220</rank>
			</item>
		</items>
		</details>
		</presentation>
	</class>
	<class id="Generator" _delta="define">
      <parent>PowerConnection</parent>
      <properties>
        <category>bizmodel,searchable</category>
        <abstract>false</abstract>
        <key_type>autoincrement</key_type>
        <db_table>generator</db_table>
        <db_key_field>id</db_key_field>
          <db_final_class_field/>
          <naming>
          <format>%1$s</format>
          <attributes>
            <attribute id="name"/>
          </attributes>
          </naming>
          <display_template/>
          <icon>images/generator.png</icon>
          <reconciliation>
          <attributes>
            <attribute id="name"/>
            <attribute id="org_id"/>
            <attribute id="organization_name"/>
        </attributes>
        </reconciliation>
      </properties>
      <fields>
		<field id="diesel_id" xsi:type="AttributeExternalKey">
			<sql>diesel_id</sql>
			<default_value/>
			<is_null_allowed>true</is_null_allowed>
			<on_target_delete>DEL_AUTO</on_target_delete>
			<target_class>Diesel</target_class>
			<filter>SELECT Diesel WHERE org_id = :this->org_id</filter>
			<dependencies>
				<attribute id="org_id" />
			</dependencies>
		</field>
      </fields>
      <methods/>
      <presentation>
        <details>
          <items>
            <item id="name">
              <rank>10</rank>
            </item>
            <item id="org_id">
              <rank>20</rank>
            </item>
            <item id="status">
              <rank>30</rank>
            </item>
            <item id="business_criticity">
              <rank>40</rank>
            </item>
            <item id="location_id">
              <rank>50</rank>
            </item>
            <item id="brand_id">
              <rank>60</rank>
            </item>
            <item id="model_id">
              <rank>70</rank>
            </item>
            <item id="serialnumber">
              <rank>80</rank>
            </item>
            <item id="asset_number">
              <rank>90</rank>
            </item>
            <item id="move2production">
              <rank>100</rank>
            </item>
            <item id="purchase_date">
              <rank>110</rank>
            </item>
            <item id="end_of_warranty">
              <rank>120</rank>
            </item>
            <item id="description">
              <rank>130</rank>
            </item>
		<item id="diesel_id">
              <rank>135</rank>
            </item>
            <item id="contacts_list">
              <rank>140</rank>
            </item>
            <item id="documents_list">
              <rank>150</rank>
            </item>
            <item id="tickets_list">
              <rank>160</rank>
            </item>
            <item id="providercontracts_list">
              <rank>170</rank>
            </item>
            <item id="services_list">
              <rank>180</rank>
            </item>
          </items>
        </details>
      </presentation>
    </class>
	  <class id="Motor" _delta="define">
      <parent>PowerConnection</parent>
      <properties>
        <category>bizmodel,searchable</category>
        <abstract>false</abstract>
        <key_type>autoincrement</key_type>
        <db_table>motor</db_table>
        <db_key_field>id</db_key_field>
          <db_final_class_field/>
          <naming>
          <format>%1$s</format>
          <attributes>
            <attribute id="name"/>
          </attributes>
          </naming>
          <display_template/>
          <icon>images/motor.png</icon>
          <reconciliation>
          <attributes>
            <attribute id="name"/>
            <attribute id="org_id"/>
            <attribute id="organization_name"/>
        </attributes>
        </reconciliation>
      </properties>
      <fields>
		<field id="diesel_id" xsi:type="AttributeExternalKey">
			<sql>diesel_id</sql>
			<default_value/>
			<is_null_allowed>true</is_null_allowed>
			<on_target_delete>DEL_AUTO</on_target_delete>
			<target_class>Diesel</target_class>
			<filter>SELECT Diesel WHERE org_id = :this->org_id</filter>
			<dependencies>
				<attribute id="org_id" />
			</dependencies>
		</field>
      </fields>
      <methods/>
      <presentation>
        <details>
          <items>
            <item id="name">
              <rank>10</rank>
            </item>
            <item id="org_id">
              <rank>20</rank>
            </item>
            <item id="status">
              <rank>30</rank>
            </item>
            <item id="business_criticity">
              <rank>40</rank>
            </item>
            <item id="location_id">
              <rank>50</rank>
            </item>
            <item id="brand_id">
              <rank>60</rank>
            </item>
            <item id="model_id">
              <rank>70</rank>
            </item>
            <item id="serialnumber">
              <rank>80</rank>
            </item>
            <item id="asset_number">
              <rank>90</rank>
            </item>
            <item id="move2production">
              <rank>100</rank>
            </item>
            <item id="purchase_date">
              <rank>110</rank>
            </item>
            <item id="end_of_warranty">
              <rank>120</rank>
            </item>
            <item id="description">
              <rank>130</rank>
            </item>
	<item id="diesel_id">
              <rank>135</rank>
            </item>
            <item id="contacts_list">
              <rank>140</rank>
            </item>
            <item id="documents_list">
              <rank>150</rank>
            </item>
            <item id="tickets_list">
              <rank>160</rank>
            </item>
            <item id="providercontracts_list">
              <rank>170</rank>
            </item>
            <item id="services_list">
              <rank>180</rank>
            </item>
          </items>
        </details>
      </presentation>
    </class>
	</classes>
<menus>
	<menu id="ConfigManagementOverview" xsi:type="DashboardMenuNode" _delta="must_exist">
	<definition>
	<cells>
		<cell id="0" _delta="must_exist">
		<dashlets>
		<dashlet id="107" xsi:type="DashletBadge" _delta="define">
		<rank>6</rank>
		<class>Diesel</class>
		</dashlet>
		</dashlets>
		</cell>
	</cells>
	</definition>
	</menu>
	<menu id="ConfigManagementOverview" xsi:type="DashboardMenuNode" _delta="must_exist">
      <definition>
        <cells>
          <cell id="0" _delta="must_exist">
            <dashlets>
              <dashlet id="115" xsi:type="DashletBadge" _delta="define">
                <rank>14</rank>
                <class>Generator</class>
              </dashlet>
            </dashlets>
          </cell>
        </cells>
      </definition>
    </menu>
	<menu id="ConfigManagementOverview" xsi:type="DashboardMenuNode" _delta="must_exist">
      <definition>
        <cells>
          <cell id="0" _delta="must_exist">
            <dashlets>
              <dashlet id="116" xsi:type="DashletBadge" _delta="define">
                <rank>15</rank>
                <class>Motor</class>
              </dashlet>
            </dashlets>
          </cell>
        </cells>
      </definition>
    </menu>
</menus>
<user_rights>
	<groups>
	</groups>
	<profiles>
	</profiles>
</user_rights>
</itop_design>
```

---

<div class="post-metadata">

**Author:** ![Krasava](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/k/a88e57/32.png) [@Krasava](https://community.itop-itsm.ru/u/Krasava)\
**Post date:** [23.Февраль.2016 10:07:57 UTC](https://community.itop-itsm.ru/t/the-following-modules-have-unmet-dependencies/311/3 "2016-02-23T10:07:57Z")

</div>

Попытался установить старую версию 2.1.0  
не установилось, выдало ошибки про другие зависимости.  
Наверное дело в серверной части.  
RHEL7 + nginx + php-fpm

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [26.Февраль.2016 06:18:11 UTC](https://community.itop-itsm.ru/t/the-following-modules-have-unmet-dependencies/311/4 "2016-02-26T06:18:11Z")

</div>

Про зависимости говорили тут:

> [@Создание, изменение и удаление типов КЕ](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/7):
>
> По инструкции оттуда делать ничего не надо. Она описывает общий порядок разработки модулей. Сначала нужно сделать всё точь-в-точь по этим манам: [Добавление поля в КЕ](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-attribute-sample)[Добавление нового типа КЕ](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-class-sample) Прям так, как там написано, пункт за пунктом. Смотрим [сюда](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-attribute-sample#create_your_customization_module): Module Version - три цифры через точку, версия твоего модуля (подробнее см. [semver](http://semver.org/lang/ru/)). Category - [модули, которые обеспечивают изменения в модели данных должны быть в категории ‘бизнес’](https://translate.yandex.ru/?text=Modules%20that%20provide%20modifications%20to%20the%20data%20model%20should%20be%20in%20the%20category%20%27business%27&lang=en-ru). Кроме business есть другие категории, их можно посмотре…
