def _migrate_contribution_fields(self):
        try:
            afm = self.old_event.abstractMgr._abstractFieldsMgr
        except AttributeError:
            return
        pos = 0

        content_field = None
        for field in afm._fields:
            # it may happen that there is a second 'content' field (old version schemas)
            # in that case, let's use the first one as description and keep the second one as a field
            if field._id == 'content' and not content_field:
                content_field = field
            else:
                pos += 1
                self._migrate_contribution_field(field, pos)

        if not content_field:
            self.importer.print_warning(
                cformat('%{yellow!}Event has no content field!%{reset}'), event_id=self.event.id)
            return

        def _positive_or_none(value):
            try:
                value = int(value)
            except (TypeError, ValueError):
                return None
            return value if value > 0 else None

        limitation = getattr(content_field, '_limitation', 'chars')
        settings = {
            'is_active': bool(content_field._active),
            'is_required': bool(content_field._isMandatory),
            'max_words': _positive_or_none(content_field._maxLength) if limitation == 'words' else None,
            'max_length': _positive_or_none(content_field._maxLength) if limitation == 'chars' else None
        }
        if settings != abstracts_settings.defaults['description_settings']:
            abstracts_settings.set(self.event, 'description_settings', settings)