diff --git a/dlx/scripts/build_logical_fields.py b/dlx/scripts/build_logical_fields.py
index 769dd74..55948a2 100644
--- a/dlx/scripts/build_logical_fields.py
+++ b/dlx/scripts/build_logical_fields.py
@@ -16,10 +16,11 @@ parser.add_argument('--connect', required=True, help='MongoDB connection string'
 parser.add_argument('--database', help='The database to use, if it differs from the one in the connection string')
 parser.add_argument('--type', required=True, choices=['bib', 'auth'])
 parser.add_argument('--start', default=0)
+parser.add_argument('--fields', help='Only build these fields', nargs='+')
   
 def run():
     args = parser.parse_args()
-    DB.connect(args.connect, database=args.database)
+    #DB.connect(args.connect, database=args.database)
 
     build_logical_fields(args)
     #build_auth_controlled_logical_fields(args) # disabled
@@ -27,6 +28,8 @@ def run():
     if args.type == 'auth':
         calculate_auth_use()
 
+    return True
+
 def build_logical_fields(args):
     cls = BibSet if args.type == 'bib' else AuthSet
     auth_controlled = Config.bib_authority_controlled if cls == BibSet else Config.auth_authority_controlled
@@ -38,6 +41,9 @@ def build_logical_fields(args):
         #    tags += list(d.keys())
         #    names.append(field)
 
+        if args.fields and field not in args.fields:
+            continue
+
         tags += list(d.keys()) + (Config.bib_type_map_tags() if cls == BibSet else Config.auth_type_map_tags())
         names.append(field)
 

diff --git a/tests/test_scripts.py b/tests/test_scripts.py
index eea6fb6..4fc8b05 100644
--- a/tests/test_scripts.py
+++ b/tests/test_scripts.py
@@ -38,9 +38,18 @@ def test_build_logical_fields(db):
         .set('246', 'a', 'Alt title') \
         .set('650', 'a', 1) \
         .commit()
-    
-    # interim
-    assert build_logical_fields.run() is None
+
+    # delete the logical field that was created on commit to test that the script adds it
+    bib.handle().update_one({'_id': bib.id}, {'$unset': {'title': 1}})
+    assert bib.handle().find_one({'_id': bib.id}).get('title') is None
+    assert build_logical_fields.run() == True
+    assert bib.handle().find_one({'_id': bib.id}).get('title') == ['Title: subtitle', 'Alt title']
+
+    # test fields arg
+    bib.handle().update_one({'_id': bib.id}, {'$unset': {'title': 1}})
+    sys.argv[1:] = ['--connect=mongomock://localhost', '--type=bib', '--fields=dummy1 dummy2']
+    assert build_logical_fields.run() == True
+    assert bib.handle().find_one({'_id': bib.id}).get('title') is None
 
 def test_build_text_collections(db):
     from dlx.marc import Bib

Allow building only certain fields in build-logical-fields script
Add an option to limit the build action to specific fields. This will be useful when an individual field configuration is updated, and only that field(s) needs to be rebuilt.
tests/test_scripts.py::test_build_logical_fields
tests/test_scripts.py::test_init_db tests/test_scripts.py::test_build_text_collections tests/test_scripts.py::test_auth_merge tests/test_scripts.py::test_import_marc