<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Importer | museum-digital: blog</title>
	<atom:link href="https://blog.museum-digital.org/category/development/importer-en-en/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.museum-digital.org</link>
	<description>A blog on museum-digital and the broader digitization of museum work.</description>
	<lastBuildDate>Mon, 12 Jan 2026 17:16:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.museum-digital.org/wp-content/uploads/2020/01/cropped-mdlogo-code-512px-32x32.png</url>
	<title>Importer | museum-digital: blog</title>
	<link>https://blog.museum-digital.org</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="search" type="application/opensearchdescription+xml" title="Search museum-digital: blog" href="https://blog.museum-digital.org/wp-json/opensearch/1.1/document" />	<item>
		<title>State of Development, December 2025</title>
		<link>https://blog.museum-digital.org/2026/01/12/state-of-development-december-2025/</link>
					<comments>https://blog.museum-digital.org/2026/01/12/state-of-development-december-2025/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Mon, 12 Jan 2026 17:15:11 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[nodac]]></category>
		<category><![CDATA[IIIF]]></category>
		<category><![CDATA[Imports]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Object editing (musdb)]]></category>
		<category><![CDATA[Object images]]></category>
		<category><![CDATA[Object search (musdb)]]></category>
		<category><![CDATA[Single image view]]></category>
		<category><![CDATA[System administration]]></category>
		<category><![CDATA[User interface]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4616</guid>

					<description><![CDATA[December 2025 was an interesting month for museum-digital. An update to the PHP version used as well as a flood of requests by what is most likely AI scrapers forced us to make changes for improved stability, reducing and reformulating features rather than adding new ones and working on matters of systems administration over purely <a href="https://blog.museum-digital.org/2026/01/12/state-of-development-december-2025/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">December 2025 was an interesting month for museum-digital. An update to the PHP version used as well as a flood of requests by what is most likely AI scrapers forced us to make changes for improved stability, reducing and reformulating features rather than adding new ones and working on matters of systems administration over purely matters of code quite often. Add to that the long-promised update of the terms of use for German museums to more structured and lawyer-approved ones, and you get yet more small changes that do not directly concern the work of museums with museum-digital but rather improve the necessary context.</p>



<h2 class="wp-block-heading">musdb</h2>



<h3 class="wp-block-heading">Object overview</h3>



<p class="wp-block-paragraph">In the default tile view of the object overview page, hovering over an object image thus far revealed the object&#8217;s name. As object names are often too long to display fully and inventory numbers are the primary means of identifying an object in most museums, this preview text has now been extended to include the inventory numer.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="570" src="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-object-list-1024x570.webp" alt="Screenshot in the object overview." class="wp-image-4613" srcset="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-object-list-1024x570.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-object-list-300x167.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-object-list-1536x855.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-object-list-2048x1140.webp 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Hovering over an object image in the tile view now also displays the inventory number.</figcaption></figure>



<h3 class="wp-block-heading">User management</h3>



<h4 class="wp-block-heading">New Options for Managing User Accounts: Disabling Accounts &amp; Setting Account Expiry Dates</h4>



<p class="wp-block-paragraph">Two new options on user editing pages allow disabling logins on an account and setting an expiry date for the account. Both can be useful for administration: If a new worker joins the museum for a project with a clear-cut limitation on funding and time, one can now set the account expiry at the beginning of the project to the end of it. The accounts will then automatically be deleted when the project ends. Similarly, colleagues that leave service temporarily but for a prolonged time (e.g. for a sabbatical) and will not need to use their accounts for that time can have their accounts disabled.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="398" src="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-options-1024x398.webp" alt="Screenshot of the user editing page in musdb." class="wp-image-4611" srcset="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-options-1024x398.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-options-300x116.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-options-1536x596.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-options-2048x795.webp 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Two new options allow disabling user accounts and setting expiry dates for user accounts.</figcaption></figure>



<h4 class="wp-block-heading">List of Terms of Use</h4>



<p class="wp-block-paragraph">A new tab on a user&#8217;s (own) account settings page provides the option to list all usage agreements / terms of use a user has agreed to in the context of their use of museum-digital / musdb and when they agreed to them.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="576" src="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-agreement-list-1024x576.webp" alt="Screenshot of the user editing page." class="wp-image-4612" srcset="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-agreement-list-1024x576.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-agreement-list-300x169.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-agreement-list-1536x864.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_musdb-user-agreement-list.webp 1949w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">A new tab on the user page lists all user agreements for musdb that the user has agreed to and when they did so.
<br></figcaption></figure>



<h3 class="wp-block-heading">Imports</h3>



<h4 class="wp-block-heading">Limiting Report Mail Size</h4>



<p class="wp-block-paragraph">When a user runs imports themselves using the <a href="https://de.handbook.museum-digital.info/import/importe-selbst-durchfuehren.html">WebDAV upload</a>, the end of the import process &#8211; no matter if it is successful or fails &#8211; is marked by the sending of a report via mail. This report usually contains a list of noteworthy operations that happened during the import, e.g. which objects of which inventory number were imported to which object in musdb, identified by its ID. As imports grow, this list of operation grows. To not encounter issues sending the report, it is henceforth limited to a maximum of 2 MB or 10000 lines.</p>



<h4 class="wp-block-heading">Dry-run Mode</h4>



<p class="wp-block-paragraph">Sometimes it is useful to try running an import to see if it will actually work but not actually process any data. This option has been available in the importer command line interface for a while, among others powering <a href="https://quality.museum-digital.org/">museum-digital:qa</a>. It is now available in the import configuration for self-run imports as well using the setting <code>dry-run</code>. Enabling the setting accordingly stops the importer from actually writing the data into the database and changes the behavior if values that need to be mapped to values in controlled lists at museum-digital are encountered. Usually an import stops the moment such data is to be imported and not yet mapped. During a dry run, the error is collected and the import proceeds. All unmapped entries are listed together at the end of the import, allowing for a simpler mapping (possibly aided by <a href="https://concordance.museum-digital.org/">concordance.museum-digital.org</a>).</p>



<h3 class="wp-block-heading">Dashboard</h3>



<p class="wp-block-paragraph">The first page of the dashboard, which for almost all users also means the start page of musdb right after the login process, was significantly reworked during the last month. The almost entirely unused notetaking features and discourse integration were removed in favor of a feed of recent blog posts. See also the section <a href="https://blog.museum-digital.org/2025/12/29/trimming/">&#8220;Communications&#8221;</a> in the respective blog post.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.museum-digital.org/wp-content/uploads/2025/12/20251229_screenshot-musdb-1024x576.webp" alt="Screenshot of the dashboard in musdb, as of 2025-12-29." class="wp-image-4594" srcset="https://blog.museum-digital.org/wp-content/uploads/2025/12/20251229_screenshot-musdb-1024x576.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2025/12/20251229_screenshot-musdb-300x169.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2025/12/20251229_screenshot-musdb-1536x864.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2025/12/20251229_screenshot-musdb.webp 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">The dashboard in musdb now features a feed of recent news relevant to the development of museum-digital and whatever is going on regionally. The posts are sorted chronologically.</figcaption></figure>



<h3 class="wp-block-heading">Annotations for the Vocabulary Editing Team</h3>



<p class="wp-block-paragraph">Each event, displayed as a tile on object editing pages, featured speech bubble icons behind each time / actor / place to provide additional comments and hints for the central vocabulary editing team. This positioning of the annotation feature led to confusion over the years, with some users using the feature to comment on the relationship between the entity and the object (for which the event notes should be used). We hence repositioned the links and moved them to the respective entity&#8217;s page (e.g. a place page for giving hints and comments on a place entry). The hinting / commenting feature for times has been altogether removed, as providing comments to clarify the meaning of e.g. a year never made much sense.</p>



<h3 class="wp-block-heading">Smaller Updates and Bugfixes</h3>



<ul class="wp-block-list">
<li>Fixed a bug in the HTML generated for listing other objects linked to an object. Links to the other object were broken and are not anymore.</li>



<li>Image editing pages now embed the image directly instead of using the IIIF API. This reduces resource usage and increases stability at no cost.</li>



<li>Removed option to manually trigger the rewriting of EXIF and IPTC metadata of object images. Rewriting takes place in the background whenever an image or a linked object is updated, making user-triggered updates obsolete.</li>



<li>Re-introduce option to repeat linking to the last used linked object</li>



<li>Updated <a href="https://swagger.io/">Swagger UI</a> to version 5.30.3</li>
</ul>



<h2 class="wp-block-heading">Frontend</h2>



<p class="wp-block-paragraph">As stated above and lengthily described in the previous blog posts (<a href="https://blog.museum-digital.org/2025/12/09/updates-ai-scrapers-and-resilience/">here</a>, <a href="https://blog.museum-digital.org/2025/12/22/cleaning-out-our-closet/">here</a>, and <a href="https://blog.museum-digital.org/2025/12/29/trimming/">here</a>) we struggled with stability over the last month. This means that most changes in the frontend are aimed at improving stability.</p>



<h3 class="wp-block-heading">Reworked Default Image Page</h3>



<p class="wp-block-paragraph">Thoroughly described in <a href="https://blog.museum-digital.org/2025/12/09/updates-ai-scrapers-and-resilience/">Updates, AI scrapers, and Resilience</a>, we replaced the default view for single object image pages. While the default view was previously built around the IIIF viewer Mirador, the new default view uses OpenLayers and the unmediated image file for capabilities such as zooming. The new view also brings with it some new features, such as an option to reference specific sections of an image.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="672" src="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-page-1024x672.webp" alt="" class="wp-image-4615" srcset="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-page-1024x672.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-page-300x197.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-page-1536x1007.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-page-2048x1343.webp 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">The reworked default image page.</figcaption></figure>



<h3 class="wp-block-heading">Serving Resource-Intensive Pages / Functionalities Only When Resources Are Available</h3>



<p class="wp-block-paragraph">PDF generation, the IIIF Image API, and the suggestions for alternative search queries on failed search pages are now limited to reduce their impact on the overall system stability. This follows two strategies:</p>



<ul class="wp-block-list">
<li>Suggestions on failed search pages and PDF generation will only appear if the overall load on the system is low. The threshold for when or when they are not provided is influenced by the user&#8217;s browser language: If a user uses a browser set to the primary language of a given instance of museum-digital (e.g. German in Hesse, Hungarian in Budapest), the threshold is much higher, meaning users will be able to access the pages at a medium server load. In the case of PDFs, high server load will forward users to the print dialogue for object pages instead of receiving a PDF generated on the server side.</li>



<li>PDF generation and the IIIF Image API are served with a different PHP configuration and set of processes than the rest of the frontend. This configuration significantly reduces available resources for these two functionalities.</li>



<li>The option to generate PDFs featuring all images of an object with between 10 and 40 images has been entirely removed. Given its constraints, the feature was hard to explain and rarely accessible anyway. The primary &#8220;users&#8221; were noticeably AI scrapers.</li>
</ul>



<h3 class="wp-block-heading">Image Search</h3>



<p class="wp-block-paragraph">The image search feature was refactored and reduced to further separate it from the primary object search. The number of available search options has been reduced to be more easily explainable and reduce possibilities for very resource-intensive queries.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="602" src="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-search-1024x602.webp" alt="" class="wp-image-4614" srcset="https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-search-1024x602.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-search-300x176.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-search-1536x903.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2026/01/20260112_frontend-image-search-2048x1204.webp 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">The reworked image search settings overlay.</figcaption></figure>



<h3 class="wp-block-heading">Batch Export of Object Metadata / OAI</h3>



<p class="wp-block-paragraph">Updated the LIDO API to almost entirely match the LIDO as generated during exports from musdb</p>



<h3 class="wp-block-heading">Smaller Updates and Bugfixes</h3>



<ul class="wp-block-list">
<li>Improved performance of object search by tags and places by filtering searched entities to those who are actually linked in the given instance of museum-digital.</li>



<li>Object groups with only one object are henceforth not displayed and linked on object pages anymore</li>



<li>Fixed link in footer: Clicking on &#8220;museum-digital&#8221; should lead to the home / start page of the given instance of musdb.</li>



<li>Updated <a href="https://swagger.io/">Swagger UI</a> to version 5.30.3</li>
</ul>



<h2 class="wp-block-heading">nodac</h2>



<ul class="wp-block-list">
<li>User-provided comments / hints have been removed for times (see above)</li>



<li>Tooltips for linked objects now display which institution an object belongs to
<ul class="wp-block-list">
<li>This is particularly important for vocabulary editors who do not have access to the museums&#8217; data. This way they get a limited preview with the required information for unpublished objects despite their otherwise lacking permissions.</li>
</ul>
</li>
</ul>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/2026/01/12/state-of-development-december-2025/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>State of Development, November 2025</title>
		<link>https://blog.museum-digital.org/2025/12/03/state-of-development-november-2025/</link>
					<comments>https://blog.museum-digital.org/2025/12/03/state-of-development-november-2025/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Wed, 03 Dec 2025 01:53:58 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[OAI-PMH]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4575</guid>

					<description><![CDATA[Frontend musdb Importer Core Parser]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/frontend/">Frontend</a></h2>



<ul class="wp-block-list">
<li>On source / reference pages, linked objects are now sorted by the position within the source work on which they are referenced or which they do themselves reference</li>



<li>The target URL of the regular / unspecified search bar for objects now follows the new, prettier URL schema</li>



<li>Support for an <a href="https://www.openarchives.org/pmh/">OAI-PMH</a> API for object metadata
<ul class="wp-block-list">
<li>Standardized endpoint for aggregators seeking to retrieve data in batch</li>



<li>Metadata formats thus far supported:
<ul class="wp-block-list">
<li>LIDO</li>



<li>OAI-DC (mandatory)</li>
</ul>
</li>



<li>See also: <a href="https://blog.museum-digital.org/2025/11/24/making-interoperability-easy/">Blog</a></li>
</ul>
</li>



<li>PDFs are only generated for users with a browser set to a non-default language if load on the server is low
<ul class="wp-block-list">
<li>The resource use caused by AI bots scraping museum-digital has been growing and growing. Generally, we see bots included in our mission to enable access to cultural heritage. On the other hand, nobody is served if the service is bogged down by bots. One functionality that is commonly used among bots and resource intensive is the generation of PDFs for object pages. The same information can be loaded from the object page itself and printed to a PDF using the browser&#8217;s print option. There are thus rather few downsides to limiting access to PDF generation to timmes, when server load is low. So that&#8217;s what we did.</li>
</ul>
</li>



<li>Collection-specific ISIL identifiers are now also used in the LIDO API</li>



<li>Alternative numbers of an object can now be displayed on object pages
<ul class="wp-block-list">
<li>This includes tooltips for types of alternative numbers, that can be set by the museum on the institution-wide settings pages of musdb</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/musdb/">musdb</a></h2>



<ul class="wp-block-list">
<li>Search for objects
<ul class="wp-block-list">
<li>Type-ahead search for languages (of the object&#8217;s content)</li>



<li>Search by object&#8217;s revision status (open, read-ony, archived, etc.)</li>
</ul>
</li>



<li>Batch editing of objects&#8217; revision status</li>



<li>Parameters of the full text search index were updated to improve the search of word compounds in German</li>
</ul>



<h3 class="wp-block-heading">Importer</h3>



<h4 class="wp-block-heading">Core</h4>



<ul class="wp-block-list">
<li>The dry-run mode now does not abort an import anymore, if an unmapped value is encountered. Unmapped entries are collected and displayed together afterwards.
<ul class="wp-block-list">
<li>This means, that unmapped entries can now much more easily be copied to and mapped in <a href="https://concordance.museum-digital.org/">concordance.museum-digital.org</a></li>
</ul>
</li>



<li>Support for the import of alternative numbers (of objects)</li>



<li>Support for the import of space hierarchies</li>
</ul>



<h4 class="wp-block-heading">Parser</h4>



<ul class="wp-block-list">
<li><code>AdlibXml</code>
<ul class="wp-block-list">
<li>Support for importing objects&#8217; alternative numbers</li>
</ul>
</li>



<li><code>CsvXml</code>
<ul class="wp-block-list">
<li>Support for importing objects&#8217; alternative numbers</li>
</ul>
</li>



<li><code>CsvLocations</code>
<ul class="wp-block-list">
<li>New parser for csv-based imports of space hierarchies</li>
</ul>
</li>



<li><code>ImageByInvno</code>
<ul class="wp-block-list">
<li>New setting: append_chars (Adds suffixes, that exist in the inventory number, but not in file names)</li>
</ul>
</li>
</ul>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/2025/12/03/state-of-development-november-2025/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>State of Dev, September 2025</title>
		<link>https://blog.museum-digital.org/2025/11/25/state-of-dev-september-2025/</link>
					<comments>https://blog.museum-digital.org/2025/11/25/state-of-dev-september-2025/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Tue, 25 Nov 2025 16:54:06 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[New Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4554</guid>

					<description><![CDATA[Recent (technical) development around museum-digital in September 2025.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Development</h2>



<h3 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/frontend/">Frontend</a></h3>



<ul class="wp-block-list">
<li>Objects that are linked to a source as referencing the source or being referenced in it are now listed on the source&#8217;s page
<ul class="wp-block-list">
<li>Example: <a href="https://hessen.museum-digital.de/source/1950">&#8220;Novalis Schriften. Die Werke Friedrich von Hardenbergs. Historisch-kritische Ausgabe. Erster Band: Das dichterische Werk. 3. Auflage&#8221;</a></li>
</ul>
</li>



<li>The object page now displays the new transcription fields for notes, status, and type of the transcription</li>



<li>New types of classifications for the link between an object and a tag
<ul class="wp-block-list">
<li>Taxon</li>



<li>Topic</li>



<li>Mentioned subject (similar to the existing &#8220;display subject&#8221;)</li>
</ul>
</li>



<li>Dependencies
<ul class="wp-block-list">
<li>Updated OpenLayers to Version 10.6</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png-1024x576.webp" alt="Screenshot: Objects referenced in source on source pages" class="wp-image-4548" srcset="https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png-1024x576.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png-300x169.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png-1536x864.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png.webp 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Source pages in the public frontend / portals of museum-digital now display all objects linked to the source as either referencing the source or being referenced by their source.</figcaption></figure>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/musdb/">musdb</a></h3>



<ul class="wp-block-list">
<li>Renaming vocabulary entries to blacklisted terms is now impossible
<ul class="wp-block-list">
<li>Someone managed to create an actor &#8220;unknown&#8221; by adding a different actor and renaming the new actor entry to &#8220;unknown&#8221; afterwards.</li>
</ul>
</li>



<li>Added a sidebar to object group overview pages for additional filtering options</li>



<li>New types of classifications for the link between an object and a tag
<ul class="wp-block-list">
<li>Taxon</li>



<li>Topic</li>



<li>Mentioned subject (similar to the existing &#8220;display subject&#8221;)</li>
</ul>
</li>



<li>New APIs for listing all vocabulary entries linked to the objects of a museum</li>



<li>Dependencies
<ul class="wp-block-list">
<li>Updated OpenLayers to Version 10.6</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading">Importer</h3>



<ul class="wp-block-list">
<li>Core
<ul class="wp-block-list">
<li>Deaccessions are now covered by the import tool</li>



<li>Recipients of deaccessions are linked to the address book / contact list</li>
</ul>
</li>



<li>Parser
<ul class="wp-block-list">
<li>CSVXML: The CSVXML parser now covers deaccessions as well</li>



<li>ImageByInvno: Added an option to ignore any characters before a given starting combination of characters (if there is a consistent start of the inventory number).</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><a href="https://csvxml.imports.museum-digital.org/">CSVXML</a></h3>



<ul class="wp-block-list">
<li>New fields
<ul class="wp-block-list">
<li>tag_related_identifier_type</li>



<li>tag_related_identifier</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Dissemination</h2>



<ul class="wp-block-list">
<li><a href="https://www.jrenslin.de/talks/von-museum-digital-zum-eigenen-online-katalog-ag-digitalisierung-mv-rlp/">Presentation</a> &#8220;Von museum-digital zum eigenen Online-Katalog&#8221; for the Working Group Digitization of the State Museum Association of Rhineland-Palatine
<ul class="wp-block-list">
<li><a href="https://files.museum-digital.org/de/Praesentationen/2025-09-10_Von-museum-digital-zum-eigenen-Online-Katalog_JRE.pdf">Slides: PDF</a></li>



<li><a href="https://files.museum-digital.org/de/Praesentationen/2025-09-10_Von-museum-digital-zum-eigenen-Online-Katalog_JRE.odp">Slides: ODP</a></li>
</ul>
</li>
</ul>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/2025/11/25/state-of-dev-september-2025/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>State of Dev, June &#038; July 2025</title>
		<link>https://blog.museum-digital.org/2025/08/23/state-of-dev-june-july-2025/</link>
					<comments>https://blog.museum-digital.org/2025/08/23/state-of-dev-june-july-2025/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Sat, 23 Aug 2025 21:12:41 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Minor Improvements]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Object search (musdb)]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4519</guid>

					<description><![CDATA[June and especially July were at first glance once again rather slow months in terms of development at museum-digital. Generally, the pace and type of development seems to have changed this year. Rather than doing many small improvements all over the place, there is less but larger and more labor intensive changes and new features. <a href="https://blog.museum-digital.org/2025/08/23/state-of-dev-june-july-2025/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">June and especially July were at first glance once again rather slow months in terms of development at museum-digital.</p>



<p class="wp-block-paragraph">Generally, the pace and type of development seems to have changed this year. Rather than doing many small improvements all over the place, there is less but larger and more labor intensive changes and new features. See for example the <a href="https://blog.museum-digital.org/2025/01/13/version-control-batch-transfer-between-data-fields-of-object-records/">versioning</a> in musdb (January), the tool for <a href="https://blog.museum-digital.org/de/2025/03/08/das-importieren-automatisieren/">automating imports</a> based on what others call a &#8220;hot folder&#8221; and the sort option to <a href="https://blog.museum-digital.org/2025/03/06/sort-by-beauty/">sort objects by their images&#8217; aesthetics score</a> (both presented here in March), and the new tool for suggesting formulations for object descriptions using large language models (June).</p>



<h2 class="wp-block-heading">July</h2>



<h3 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/frontend/">Frontend</a></h3>



<ul class="wp-block-list">
<li>Translation of the software to <a href="https://blog.museum-digital.org/2025/07/13/hindi/">Hindi</a> and <a href="https://blog.museum-digital.org/2025/07/02/browse-museum-digital-in-telugu/">Telugu</a></li>



<li>Grouping of tags by their relation to a given object<br><em>If an object is linked to more than 10 tags, the tag list of object pages quickly starts looking unorganized and messy. In such cases, the tags will now be displayed grouped by their relationship to the object (thus far: general tag, material, technique, object type, display subject)</em></li>
</ul>



<h3 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/musdb/">musdb</a></h3>



<h4 class="wp-block-heading">New Features</h4>



<ul class="wp-block-list">
<li>Export option for the specific LIDO as expected by the <a href="http://Koloniale Kontexte-Portal der Deutschen Digitalen Bibliothek">German Digital Library&#8217;s &#8220;colonial contexts&#8221; portal</a></li>
</ul>



<h4 class="wp-block-heading">Improvements &amp; Changes</h4>



<ul class="wp-block-list">
<li>The minimum length of fulltext search terms for object search parameters is now visibly enforced in the extended search user interface<br><em>To not overly burden the fulltext search server, any term in a full text search in musdb needs to be a minimum of two characters long. Thus far, shorter full text search parameters were simply ignored. This certainly was confusing at times. Since June, attempting to perform search queries with shorter search parameters is made impossible by a check in the extended search overlay.</em></li>



<li>Reception history of objects: Statements of the relevant position within a source can now be 40 characters long</li>



<li>Transcriptions
<ul class="wp-block-list">
<li>May now be up to 4000000 long</li>



<li>New fields: Notes on the transcription, status, aims</li>
</ul>
</li>
</ul>



<h4 class="wp-block-heading">Bugfixes</h4>



<ul class="wp-block-list">
<li>Fixed a bug in the batch editing of specific visibility flags for data fields on the addendum tab</li>
</ul>



<h2 class="wp-block-heading">Juni</h2>



<h3 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/frontend/">Frontend</a></h3>



<ul class="wp-block-list">
<li>Performance improvements
<ul class="wp-block-list">
<li>Object search now runs without a connection to the full text search server if no full text search parameter is set</li>



<li>If multiple search parameters for an earliest / latest time have been set, they are parsed and combined before being forwarded to the database</li>
</ul>
</li>



<li>Improvements in the deletion of temporarily created PDF files (PDF export)</li>



<li>Navigation has been translated to <a href="https://blog.museum-digital.org/de/2025/06/23/tamil/">Tamil</a></li>
</ul>



<h3 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/musdb/">musdb</a></h3>



<h4 class="wp-block-heading">New Features</h4>



<ul class="wp-block-list">
<li>Recipient of deaccessed objects can now be linked from within the address book</li>



<li><a href="https://blog.museum-digital.org/de/2025/06/19/ki-objektbeschreibungen/">New tool for AI-aided formulation o object descriptions (based on existing other metadata)</a></li>
</ul>



<h4 class="wp-block-heading">Improvements</h4>



<ul class="wp-block-list">
<li>Object search now runs without a connection to the full text search server if no full text search parameter is set</li>
</ul>



<h3 class="wp-block-heading"><a href="https://blog.museum-digital.org/category/development/importer-en-en/">Importer</a></h3>



<ul class="wp-block-list">
<li>The CSVXML parser has been extended to cover new event types and markings</li>



<li>Object groups automatically generated to group all objects of an import can now receive a description as set within the import configuration</li>
</ul>



<h3 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/nodac/">nodac</a></h3>



<p class="wp-block-paragraph">The list of selectable languages for the navigation of nodac has now been restricted to those in which there is actually a complete translation</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/2025/08/23/state-of-dev-june-july-2025/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>State of Dev, May 2025</title>
		<link>https://blog.museum-digital.org/2025/07/07/state-of-dev-may-2025/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Mon, 07 Jul 2025 15:00:26 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[nodac]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Object search (musdb)]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4430</guid>

					<description><![CDATA[An overview about recent developments around museum-digital in May 2025.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/frontend/">Frontend</a></h2>



<h3 class="wp-block-heading">New Features</h3>



<ul class="wp-block-list">
<li>Tabs are available in the configuration when the site is installed as a Progressive Web App (<a href="https://de.wikipedia.org/wiki/Progressive_Webanwendung">PWA</a>) (<a href="https://developer.chrome.com/docs/capabilities/tabbed-application-mode">See also</a>)</li>
</ul>



<h3 class="wp-block-heading">Improvements</h3>



<ul class="wp-block-list">
<li>Duplicate search query parameters for objects associated with times before / after are removed.<br><em>Example: If one searches for &#8220;Objects after 1900, whose first recorded associated time is also after 2000&#8221;, this is a duplicate query. 2000 is always after 1900, so one of the two parameters can be removed.</em><br><em>Searches by time begin / end are also the foundation for the timeline. As the timeline is both beloved by web crawlers and resource-intensive to generate, this change significantly reduced server load.</em></li>



<li>Any links on timeline pages that do not reference single object pages are marked as <code>rel=nofollow</code><br><em>Which is to say that bots are told to ignore them.</em></li>
</ul>



<h2 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/musdb/">musdb</a></h2>



<h3 class="wp-block-heading">New Features</h3>



<ul class="wp-block-list">
<li>Tabs are available in the configuration when musdb is installed as a Progressive Web App (<a href="https://de.wikipedia.org/wiki/Progressive_Webanwendung">PWA</a>) (<a href="https://developer.chrome.com/docs/capabilities/tabbed-application-mode">See also</a>)</li>



<li>New search option for objects: &#8220;Can be published&#8221;<br><em>Aggregate search for objects that have not yet been published and which comply with the minimum requirements for publication.</em></li>



<li>Separated measurements can now be batch-edited<br><em>Available via &#8220;assign results&#8221;</em></li>



<li>Institution-wide setting to enforce the use of the user-defined object editing interface for all users of the institution</li>



<li>Exhibitions can now be searched via the API (<em><a href="https://de.handbook.museum-digital.info/musdb/API/index.html#/exhibition/exhibitionList">/exhibition/list</a></em>)</li>



<li>A user&#8217;s <a href="https://en.wikipedia.org/wiki/User_agent">user-agent</a> is checked whenever a page is requested. If it changed, the user will be logged out automatically.<br><em>Protection against <a href="https://owasp.org/www-community/attacks/Session_hijacking_attack">session hijacking</a>.</em></li>
</ul>



<h3 class="wp-block-heading">Improvements</h3>



<ul class="wp-block-list">
<li>Panorama images for tours through exhibitions / institutions are calculated down to 2400 px height rather than 1400 px height</li>



<li>The APIs for searching for entries in controlled vocabularies are now available via the main API<br><em>See e.g. </em><code><a href="https://de.handbook.museum-digital.info/musdb/API/index.html#/actor/actorSearchLinkedToObjects">/actor/search_linked_to_objects/{term}</a></code><em> , </em><code><a href="https://de.handbook.museum-digital.info/musdb/API/index.html#/actor/actorSearch">/actor/search/{term}</a></code><em> etc.</em></li>
</ul>



<h3 class="wp-block-heading">Bugfixes</h3>



<ul class="wp-block-list">
<li>Fix: &#8220;Visiting scientists&#8221; couldn&#8217;t open the &#8220;location&#8221; tab (this erroneously required museum-wide editing permissions)</li>



<li>Fix: User-defined defaults for descriptions of new objects were ignored when new objects were to be added</li>



<li>Fix: Thumbnails were displayed as duplicate images linked to exhibitions (tag &#8220;images&#8221;)</li>



<li>Fix: Prefixing via the batch editing was broken</li>
</ul>



<h2 class="wp-block-heading"><a href="https://blog.museum-digital.org/de/category/technik-design/importer-de/">Importer</a></h2>



<h3 class="wp-block-heading">New Features</h3>



<ul class="wp-block-list">
<li>New parser for CSV exports / imports from <a href="https://www.robotron-daphne.de/">Robotron Daphne</a></li>
</ul>



<h3 class="wp-block-heading">Improvements</h3>



<ul class="wp-block-list">
<li>CSVXML Parser
<ul class="wp-block-list">
<li>New literature-related fields (ISSN, editor, etc.) are now covered</li>



<li>References to wikidata are now respected as tags are imported</li>
</ul>
</li>



<li>The maximum length of any single given tag/keyword is centrally set to 95 characters</li>
</ul>



<h4 class="wp-block-heading">Bugfixes</h4>



<ul class="wp-block-list">
<li>Some more recently added fields from the &#8220;admininstration&#8221; tag of musdb&#8217;s object pages had been read by the importer but their transfer into the database had not been implemented thus far.</li>
</ul>



<h2 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/nodac/">nodac</a></h2>



<h4 class="wp-block-heading">New Features</h4>



<ul class="wp-block-list">
<li>Tabs are available in the configuration when nodac is installed as a Progressive Web App (<a href="https://de.wikipedia.org/wiki/Progressive_Webanwendung">PWA</a>) (<a href="https://developer.chrome.com/docs/capabilities/tabbed-application-mode">See also</a>)</li>
</ul>



<h2 class="wp-block-heading"><a href="https://csvxml.imports.museum-digital.org/">CSVXML</a></h2>



<h3 class="wp-block-heading">Improvements</h3>



<ul class="wp-block-list">
<li>Added new literature fields: type, editor, edition / issue, ISSN</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>State of Dev, March &#038; April 2025</title>
		<link>https://blog.museum-digital.org/2025/06/08/state-of-dev-march-april-2025/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Sun, 08 Jun 2025 17:04:00 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Institution-specific settings]]></category>
		<category><![CDATA[LIDO]]></category>
		<category><![CDATA[Multilinguality]]></category>
		<category><![CDATA[New Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4515</guid>

					<description><![CDATA[Frontend musdb Importer]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/frontend/">Frontend</a></h2>



<ul class="wp-block-list">
<li>A <a href="https://blog.museum-digital.org/2025/03/25/kannada/">Kannada</a> translation of the software is now available</li>



<li>Museums can now select to display their own citation notes in the menu for such on object pages<br>This is especially relevant in case the object <em>itself is to be cited (rather than its record online). </em></li>



<li>&#8220;Or&#8221; search queries can be combined within one search parameter for select attribute search types, e.g. places and tags. The Syntax is as follows: <code>place:61~1</code>
<ul class="wp-block-list">
<li>For now, this can only be used using the internal query language. As such, there is no corresponding option in the UI for search settings. On the other hand, the search option is thus available using the API.</li>



<li>This option is not available when searching for times or full events</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/musdb/">musdb</a></h2>



<ul class="wp-block-list">
<li>Institution-wide settings 
<ul class="wp-block-list">
<li>Free text fields that double with similar controlled fields may now be hidden 
<ul class="wp-block-list">
<li>The acquisition of an object may e.g. be directly recorded on the context of a given object or as a separate acquisition process. Recording it as an acquisition process is slightly more labor-intensive, but allows a more fine-grained and accurate documentation. With the new setting, the data fields for recording acquisitions directly in the object context can be hidden from all users of a museum to ensure a uniform use of the preferred functionality.</li>



<li>Institution-specific notes on how to cite objects may now be recorded for display on published object pages.</li>
</ul>
</li>
</ul>
</li>



<li><a href="https://blog.museum-digital.org/2025/03/29/bringing-back-character-driven-search-for-inventory-numbers-in-musdb/">Search queries for inventory numbers are now character-level searches again (rather than following a fulltext search logic)</a></li>



<li>Some event types are incomplete, i.e. they cannot contain a place, or an actor, or a time. This incompleteness was handled differently between musdb, the import tool, and the CSVXML import preparation tool. Now, it is determined by a centralized list and thus similar across all of museum-digital.  </li>



<li>Refactoring of the administrative command line interface <br><em>This mainly concerns auto-correction tools, but also results in that exports for the quick export option are now automatically generated daily.</em><br></li>



<li>Separated measurements are now positioned at the very top of the &#8220;addendum&#8221; tab of object editing pages.</li>



<li>It is now possible to record web links for object groups</li>
</ul>



<h2 class="wp-block-heading"><a href="https://blog.museum-digital.org/category/development/importer-en-en/">Importer</a></h2>



<ul class="wp-block-list">
<li>The import tool can now be used as a harvester
<ul class="wp-block-list">
<li>First use case is a harvester for LIDO records delivered via an OAI-PMH interface.</li>
</ul>
</li>



<li>Externally stored images in formats other than JPG can now be imported </li>



<li>Significantly extended the LIDO parser to (among others) support the import of multilingual object data</li>
</ul>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>State of Dev, February 2025</title>
		<link>https://blog.museum-digital.org/2025/03/25/state-of-dev-february-2025/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Tue, 25 Mar 2025 16:07:17 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Bugfix]]></category>
		<category><![CDATA[Imports]]></category>
		<category><![CDATA[New Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4362</guid>

					<description><![CDATA[In terms of development happening around museum-digital, February 2025 was a rather calm month. While more happened in the "machine room", immediately visible changes are mostly restricted to bugfixes. And a whole new tool.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In terms of development happening around museum-digital, February 2025 was a rather calm month. While more happened in the &#8220;machine room&#8221;, immediately visible changes are mostly restricted to bugfixes. And a whole new tool.</p>



<p class="wp-block-paragraph">Here, as so often, in a list format:</p>



<h2 class="wp-block-heading">Frontend</h2>



<ul class="wp-block-list">
<li><strong>Bugfix</strong>: The detailed description was not reflected in the object API even if set to be so via musdb</li>



<li><strong>Translation</strong>: The frontend is now available in <a href="https://blog.museum-digital.org/2025/03/25/kannada/">Kannada</a></li>
</ul>



<h2 class="wp-block-heading">musdb</h2>



<ul class="wp-block-list">
<li><strong>Bugfix:</strong> Fixed error in setting up new two factor authentication via TOTP (app-based 2fa)</li>



<li><strong>Bugfix:</strong> Symbols for image rotation switched (counter-clockwise symbol rotated clockwise and vice-versa)</li>



<li><strong>Feature</strong>: If the generation of a PDF catalogue is triggered via the sidebar of series editing pages, the objects will follow their order within the object group</li>
</ul>



<h2 class="wp-block-heading">Importer</h2>



<ul class="wp-block-list">
<li>If no explicit name/title for a resource (audio, video, PDF, 3D, externally hosted image) was supplied, there was no fallback. Now, the importer follows the same logic as musdb and will fall back to using the linked object&#8217;s object name as a resource title if none is supplied.</li>



<li>The <a href="https://csvxml.imports.museum-digital.org/">CSVXML</a> parser can now handle multiple objects per XML file.</li>
</ul>



<h2 class="wp-block-heading">Auto uploader</h2>



<p class="wp-block-paragraph">The auto uploader is an entirely new tool. When first started, users will be asked to enter the necessary data for running imports. And they are asked for the path to a folder which will subsequently be monitored for automatic uploads.</p>



<p class="wp-block-paragraph">Whenever the tool then detects suitable contents for an import in the folder, the data will be uploaded and automatically imported. Intermediate steps like the generation of a settings file for the import are covered by the tool.</p>



<p class="wp-block-paragraph">The tool can thus be useful for museums that regularly import data formed in a consistent format &#8211; say, museums using museum-digital for publishing while mainting a separate collection management system. It should be uninteresting to those who spend much effort on preparing imports (e.g. via <a href="https://csvxml.imports.museum-digital.org/">CSVXML</a>) or who want to migrate to musdb altogether, as it only becomes useful in the case of regular use.</p>



<p class="wp-block-paragraph">The code is available <a href="https://gitea.armuli.eu/museum-digital/museum-digital-webdav-uploader">here</a>, licensed under GPL v3.<br>See also the <a href="https://blog.museum-digital.org/de/2025/03/08/das-importieren-automatisieren/">more detailed German-language blog post about the auto uploader</a>.</p>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>State of Dev, December 2024 &#038; January 2025</title>
		<link>https://blog.museum-digital.org/2025/02/14/state-of-dev-december-2024-january-2025/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Thu, 13 Feb 2025 23:48:42 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[nodac]]></category>
		<category><![CDATA[Batch editing]]></category>
		<category><![CDATA[Change log]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[Imports]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[TEI]]></category>
		<category><![CDATA[Version control]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4306</guid>

					<description><![CDATA[Once again a simple change log of the recent updates to museum-digital's different tools.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">December 2024</h2>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/frontend/">Frontend</a></h3>



<ul class="wp-block-list">
<li>Dates in <a href="https://de.wikipedia.org/wiki/Text_Encoding_Initiative">TEI</a> transcriptions are parsed, irrespective of whether <code>when=""</code> oder <code>when=''</code> was used</li>



<li>Notes for markings are now publicly displayed<br><em>This was missing thus far and is now implemented similar to how event notes are displayed. If a note exists, a small &#8220;[?]&#8221; appears behind the marking title line. Upon hovering over it, a tooltip appears with the relevant information.</em></li>
</ul>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/musdb/">musdb</a></h3>



<ul class="wp-block-list">
<li>Names and descriptions of exhibitions and object groups can now be translated</li>



<li><a href="https://blog.museum-digital.org/2025/01/13/version-control-batch-transfer-between-data-fields-of-object-records/">Version control</a></li>



<li>Log of “current locations&#8221; of an object can be exported as a CSV file</li>



<li>Uploaded object images can now be hidden or published in one batch operation</li>



<li><a href="https://de.handbook.museum-digital.info/musdb/API/index.html">API</a> extended
<ul class="wp-block-list">
<li>(New functions)</li>



<li>Transfer object dimensions</li>



<li>List images and resources for an object</li>



<li>Image metadata</li>



<li>Publish / hide object images</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">January 2025</h2>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/frontend/">Frontend</a></h3>



<ul class="wp-block-list">
<li><em>Objects can now be sorted by the aesthetics of the thumbnail</em> (A dedicated blog post on this will follow soon)</li>
</ul>



<h2 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/musdb/">musdb</a></h2>



<ul class="wp-block-list">
<li><a href="https://blog.museum-digital.org/de/2025/01/13/versionierung-transfer-zwischen-datenfeldern/">Batch transfer between between free text fields of object data</a></li>



<li>Alignment of the maximum field length for notes on opening hours is now consistent between UI and database</li>



<li>Bug fixed with switching between institutions during consistency checks fixed (relevant only to users with administrative access to multiple museums)</li>



<li>Literature can now be searched by editors</li>
</ul>



<h3 class="wp-block-heading"><a href="https://blog.museum-digital.org/de/category/technik-design/importer-de/">Importer</a></h3>



<ul class="wp-block-list">
<li>Core
<ul class="wp-block-list">
<li>Automatic transformation of life dates for actors
<ul class="wp-block-list">
<li>Year of death “01.01.2012” now becomes “2012”, instead of 01.01 as before</li>
</ul>
</li>



<li>&#8220;?&#8221; and &#8220;(?)&#8221; are removed from the beginning and end of imported keywords</li>



<li>Various types of brackets in keyword names are converted to regular brackets</li>
</ul>
</li>



<li>Parser
<ul class="wp-block-list">
<li>Stricter internal implementation of settings, all imports can now implement the <code>start_at</code> setting
<ul class="wp-block-list">
<li>This is particularly useful for the repeated execution of imports that abort due to new, previously uncovered elements and other debugging.</li>
</ul>
</li>



<li>New parsers:
<ul class="wp-block-list">
<li><a href="https://de.wikipedia.org/wiki/Metadata_Object_Description_Schema">MODS</a> (mainly used in library contexts)</li>



<li>Parser for Exports from Faust for the <a href="https://st.museum-digital.de/institution/87">Händel-Haus</a></li>



<li>Parser for XML dumps from MuseumPlus Classic (MsSQL > XML export per table > Import)</li>



<li>Bugfixes
<ul class="wp-block-list">
<li>Field “Verwender” in Primus parser was mapped to production events</li>



<li>Material / technology are now imported correctly in the parser for BeeCollect exports for the Industrial Museums of Saxony</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>



<li>„Frontend“
<ul class="wp-block-list">
<li>CLI now also has options for switching off the import of individual areas</li>



<li>Help text for command line tool</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/nodac/">nodac</a></h3>



<ul class="wp-block-list">
<li>Splitting of keywords now also recognizes keywords that should be split into places, times, etc.
<ul class="wp-block-list">
<li>Bsp.: „Helm; Berlin“ > Schlagwort „Helm“ + Ort „Berlin“</li>



<li>Example: “helmet; Berlin” > keyword “helmet” + place “Berlin”</li>
</ul>
</li>



<li>When searching for keywords with ambiguous names, both keywords and generally ambiguous terms are now taken into account</li>



<li>Times can now be merged with others directly from the time edit page</li>
</ul>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A Concordance Checker for Preparing Imports to museum-digital</title>
		<link>https://blog.museum-digital.org/2025/01/23/a-concordance-checker-for-preparing-imports-to-museum-digital/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Thu, 23 Jan 2025 15:00:40 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Imports]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[New tools]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4274</guid>

					<description><![CDATA[When one runs an import to museum-digital &#8211; specifically one focused on internal collection management data &#8211; there is a chance to encounter errors of unmatched entries. The import tool identified that one tried to import a yet unknown value to what is a controlled field in musdb. Common issues appear especially with actor roles <a href="https://blog.museum-digital.org/2025/01/23/a-concordance-checker-for-preparing-imports-to-museum-digital/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When one runs an import to museum-digital &#8211; specifically one focused on internal collection management data &#8211; there is a chance to encounter errors of unmatched entries. The import tool identified that one tried to import a yet unknown value to what is a controlled field in musdb. Common issues appear especially with actor roles and entry types.</p>



<p class="wp-block-paragraph">Say, a museum&#8217;s previous database used actor roles over an event structure to express who created an object. As such, the museum entered that the object has a linked actor X that is linked to the object as a &#8220;main creator&#8221; and a linked time Y marked as the &#8220;creation time&#8221;. During the import, these roles (&#8220;main creator&#8221; and &#8220;creation time&#8221;) are then translated to museuem-digital&#8217;s event types to form an event: The object was created by actor X at the time Y. This works, because the terms &#8220;main creator&#8221; and &#8220;creation time&#8221; have been matched to the creation event type.</p>



<p class="wp-block-paragraph">If a term is not yet matched to a corresponding value of a controlled list in museum-digital, the importer will simply abort the import. On the one hand this is a way to uselessly require resources for an import that cannot be completed anyway. On the other, it is tedious. One recognizes yet unmatched entries only one by one.</p>



<h2 class="wp-block-heading">A Small New Tool</h2>



<p class="wp-block-paragraph">A small new tool, available at <a href="https://concordance.museum-digital.org/">concordance.museum-digital.org</a>, makes the process a bit less tedious. Users can upload all the import data from a given field (e.g. the actor roles) &#8211; one a line &#8211; and check whether they are already matched using the concordance lists or not.</p>



<p class="wp-block-paragraph">For entries that are not yet matched, the tool will offer selection boxes to perform the matching using the graphical user interface. Once all entries have been matched, one can then generate the relevant lines of code to enter the missing entries to the concordance list upon the click of a button.</p>



<p class="wp-block-paragraph">While simply checking and extending the relevant <a href="https://gitea.armuli.eu/museum-digital/MDImporterConcordanceLists">open source lists</a> should be trivial even to most non-technical users, this way is certainly more convenient. Importantly, it also removes the need to run the import multiple times until one does not encounter errors caused by unmatched entries anymore. And, well, it certainly is also more convenient to match to regular human language values than to the internal IDs of the target values.</p>



<p class="wp-block-paragraph">The concordance checker&#8217;s MIT-licensed code can be found <a href="https://gitea.armuli.eu/museum-digital/concordance-checker">here</a>.</p>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>State of Development, November 2024: &#8220;Real&#8221; separated Measurements and a Better Recognition of Tags, Places, etc.</title>
		<link>https://blog.museum-digital.org/2025/01/13/state-of-development-november-2024-real-separated-measurements-and-a-better-recognition-of-tags-places-etc/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Mon, 13 Jan 2025 13:41:45 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Change log]]></category>
		<category><![CDATA[New Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4255</guid>

					<description><![CDATA[A short overview in list form of the recent technical updates around museum-digital, as of November 2024.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">musdb</p>



<ul class="wp-block-list">
<li>Basic re-implementation of separated measurements for objects (tab: &#8220;addendum&#8221;)</li>



<li>The type of measurement (width, length, etc.) is now managed using a controlled list, which can easily be extended. This also allows for measurement types of different levels of specificity (&#8220;width&#8221; vs. &#8220;width of socle&#8221;)</li>



<li>The new implementation allows users to identify whether a measurement is exact and add notes for each measurement</li>



<li>Measured values now need to be entered as a floating point number &#8211; consistent search for objects smaller or larger than a given size is thus made possible (previously only available for entries where the system could deduce a numeric value from whatever had been entered)</li>



<li>Unique naming components of entered tags are automatically parsed into a relation type. German: &#8220;Apfel (Motiv)&#8221; is automatically split into the tag &#8220;Apple&#8221; and the relation type &#8220;display subject&#8221;.</li>



<li>Users entering a tag with such a naming component that is known to belong to another vocabulary will have their input auto-corrected to reflect both. Entering the tag &#8220;Berlin (Motiv)&#8221; will be auto-corrected to a link to a &#8220;displayed place&#8221; &#8220;Berlin&#8221;.</li>



<li>The list of spaces that can be linked to an object as its current location is now sorted alphabetically</li>
</ul>



<p class="wp-block-paragraph">Frontend</p>



<ul class="wp-block-list">
<li>Re-implemented separated Measurements</li>
</ul>



<p class="wp-block-paragraph">Import</p>



<ul class="wp-block-list">
<li>The import tool now also uses the new implementation of separated measurements</li>



<li>Unique naming components of entered tags are automatically parsed into a relation type. German: &#8220;Apfel (Motiv)&#8221; is automatically split into the tag &#8220;Apple&#8221; and the relation type &#8220;display subject&#8221;.</li>



<li>Users entering a tag with such a naming component that is known to belong to another vocabulary will have their input auto-corrected to reflect both. Entering the tag &#8220;Berlin (Motiv)&#8221; will be auto-corrected to a link to a &#8220;displayed place&#8221; &#8220;Berlin&#8221;.</li>



<li>Links between two objects are now imported using the dedicated data type for this purpose. They had previously been imported as regular web links.</li>
</ul>



<p class="wp-block-paragraph">nodac</p>



<ul class="wp-block-list">
<li>When merging two entries, links between the entries and collections, exhibitions, etc. are now reflected and rewritten</li>



<li>previously, links to such data types prevented the completion of the merge</li>



<li>If an entry&#8217;s name is marked to always belong to e.g. a tag, the buttons for transferring the entry to the actor, place, or time vocabularies are now hidden.</li>



<li>If an entry is moved between vocabularies, links between the entry and objects as &#8220;display subject&#8221; / &#8220;displayed place&#8221; / &#8220;displayed actor&#8221; are reflected and translated into new links using the appropriate link type.</li>



<li>A new context menu on overview pages allows for a quick access to functionalities like the splitting of entries</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
